`

SWT/JFACE/RCP 入门二:第一个SWT程序

阅读更多

 

和一般的入门程序一样,我们先写一个简单的swt程序,及分析里面的代码。

 

 

public class Demo1 {

    public static void main(String[] args) {
        new Demo1();
    }

    public Demo1() {
        // 新建一个display
    	// 相当于创建了一个swt的运行环境
        Display display = Display.getDefault();
        // 新建一个窗体,窗体就是一个面板,带有标题栏啥的
        Shell shell = new Shell();
        // 设置窗体尺寸
        shell.setSize(300, 400);
        // 设置窗体标题
        shell.setText("hello 讯讯");
        // 创建主要内容
        createContent(shell);
        // 打开窗体
        shell.open();
        // 设置充满式布局
        // shell.setLayout(new FillLayout());
        // 刷新布局,如果没有设置布局,则不需要刷新
        // shell.layout();
        // 以下代码是为了阻塞display释放,
        //和抛出display接收到的事件
        while (!shell.isDisposed()) {
            //这几句代码是很多人都会奇怪的地方,也讲解下,
//这两句代码,其实就是接受请求系统,查看是否有关于swt的操作没,
//如果有,则会一层一层的抛出,交给对应的控件去处理
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        System.exit(0);
    }

    /**
     * @param shell
     */
    private static void createContent(Shell shell) {
        // 创建一个button,父容器为shell,样式为SWT.PUSH,此样式效果是凸起
        Button leftButton = new Button(shell, SWT.PUSH);
        // 设置坐标及尺寸
        leftButton.setBounds(0, 0, 100, 100);
        // 设置文本
        leftButton.setText("i am button");
        
        // 新建一个composite容器,父容器为shell,样式为SWT.BORDER,此样式效果是有边框
        // composite容器,是必须要理解的概念
        Composite emptyComp = new Composite(shell, SWT.BORDER);
        emptyComp.setBounds(100, 0, 100, 100);

        // 新建一个composite容器,父容器为shell,样式为0,此样式效果没有任何效果
        Composite contentComp = new Composite(shell, SWT.BORDER);
        contentComp.setBounds(100, 100, 200, 100);

        // 新建一个text,父容器为contentComp,
        //样式为SWT.BORDER,此样式效果是有边框,且多行,且自动换行
        Text text = new Text(contentComp, SWT.BORDER | SWT.MULTI | SWT.WRAP);
        text.setText("i am text , i am text");
        // 此处的坐标,是0,0,因为设置坐标的是相对于父控件,
        //也就是contentComp来说的,并不是对于整个应用设置的
        // 所以从0,0开始,也就是父控件的坐标起点
        text.setBounds(0, 0, 200, 100);
    }

}

 运行结果如下:



 

除了代码中的注释,还有几个需要了解的概念,display,shell窗口,composite容器,parent父容器,style样式。

 

display:swt的运行环境,主要功能是和系统做交互,这个运行环境里面还有一条主线程,也就是swt的UI线程而是swt乃至其他界面语言的一个线程保护机制,ui线程的东西只能在UI线程中处理,这种处理方式主要实现是在控件的基类widget.class里面的checkWidget ()做判断。如果跨线程处理了ui线程的控件的某些方法就会触发checkWiget的方法,里面有个线程id的判断,就会有个Invalid thread access的错误(这个错误在线程处理的时候比较高发)。

 

shell:swt的窗体控件,是最基本的显示控件。没有一个窗体,其他控件都没办法做显示,shell是唯一一个不需要传入parent就可以可视化的控件。一个空的窗体就长这个样子

 

 

composite:容器,是一个空的面板,主要作用就是用来存放控件。通常开发中,我们不可能将所有的代码几千行都写到一个类中(但实际上,真有S  B经理让我这样做,无力吐槽),我们都会将代码分成很多个类,模块化,封装。同理,我们再ui界面开发的时候,都会将一个页面分割成不同的部分,每个不同的部分,就是不同的composite,再在不同的composite里面放置控件,将一个复杂的页面分解成很多简单的页面。这个和面向对象编程的思想一致。

 

 

parent:父容器,在我们创建一个控件的时候,都需要传入一个parent,且parent不能为null。父容器都是Composite的实现类。

 

style:样式,样式简单的说,就是创建这个控件时候你希望的样子,且样式是不可变的。swt中,不同的样式会生成完成不一样的控件,比如btn,当你的style=SWT.CHECK,它就是个复选框,style=SWT.RADIO,它就是个单选框,style=SWT.PUSH的时候,就是一个普通的按钮。常见style样式,可查看这个网址:https://www.jianshu.com/p/f6b5e41c2ce5

 

备注:

parent,style都是创建构造器中必须传入的参数,这和一般的ui语言并不相同,其实这个由swt的底层决定,因为swt所有的控件都是根据操作系统决定的。当你不传入的时候,系统无法为你创建句柄,也没办法知道你的控件类型,而一般的ui语言,大多都是通过cpu运算时候,算法渲染出来的,和os无关。

 

Button:按钮,常用API:setText设置按钮文本,addSelectionListener点击事件,getText获取按钮文本内容

Text:输入框,常用API:setText,getText。

 

这是一个swt基本的入门demo。源码可以上github上找。

 

 

本章主要是查看swt创建一个程序的基础代码,和一些关键的类,下一章将以板块化的方式将SWT分成4个模块,逐一讲解。

 

===========================================================

我会在github上将控件的demo代码逐一补充,有需要的同学请标个星,将不断更新DEMO。技术讨论:5222041

https://github.com/JavaRui/com.eshinetech.rcp.training.git

demo将持续更新。需要群讨论,可以到第一节查看前言。

如果想查看各种控件的使用,可以下载电子书《Eclipse_Swt_Jface_核心应用》说是核心,其实都是些基础的入门代码。

如果对知识点有不同意见,请留言

文章列表

 

http://1299020954.iteye.com/

===========================================================

 

 

 

 

 

 

  • 大小: 6.7 KB
  • 大小: 3.4 KB
  • 大小: 4.9 KB
分享到:
评论

相关推荐

    Eclipse SWT JFace核心应用_pdf_含标签_目录

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其...

    Eclipse SWT/Jface核心应用(1)

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其...

    Eclipse SWT/Jface核心应用(2)

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其...

    swt/Jface中文教程

    rcp开发中用到的swt/Jface组件等 Swt.JFace.in.Action中文版

    SWT/JFace核心应用源代码

    SWT/JFACE核心应用一书的配套源代码

    Eclipse SWT JFace核心应用 PDF.part1 of 3

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其...

    Eclipse SWT JFace核心应用 PDF.part2 of 3

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其...

    swt/jface书附带代码

    java开发利器 eclipse swt/jface核心应用书中源代码

    SWT/JFace核心应用PDF文档(1-7章)

    本文档含1-7章;由于上传大小的限制分开了上传。覆盖SWT技术的各个方面,从最基本的简单概念到SWT线程的高级知识,再到SWT的扩展JFace,然后到RCP的应用。本书内容涵盖SWT的各个方面,是对SWT内容体系的整体总结。

    Eclipse SWTJFace核心应用光盘内容及其应用的jar包

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其...

    Eclipse SWT/JFace核心应用2

    SWT、JFace和RCP的相关源代码,配合前面的视频,一起使用

    Eclipse_Swt_Jface_核心应用的源码

    《Eclipse_Swt_Jface_核心应用》介绍Eclipse的核心,详细讲解了SWT,JFace,RCP,介绍了SWT,JFace的基本控件以及事件处理,布局,及SWT的高级应用,JFace的框架及RCP的框架及应用的开发.这里是这本书的光盘源码

    Eclipse SWT JFace核心应用 PDF.part3 of 3

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其...

    SWT\JFace核心应用 PDF文档(14-19章)

    本文档含14-19章;由于上传大小的限制分开了上传。覆盖SWT技术的各个方面,从最基本的简单概念到SWT线程的高级知识,再到SWT的扩展JFace,然后到RCP的应用。本书内容涵盖SWT的各个方面,是对SWT内容体系的整体总结。

    Eclipse_Swt_Jface_核心应用_part01_of_19

    全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace 框架的知识及其...

    swt&jface&rcp.chm.rar

    swt&jface&rcp.chm.rar

    Eclipse从入门到精通

    RCP开发篇给出了一个基于数据库开发和面向对象分析设计的完整RCP项目实例:Web开发篇以 Tromcat+Lomboz+Struts+Hibernate为开发环境,详述了其下载、安装、配置和开发的全过程。本书 以SWT/JFace、插件开发、RCP...

    基于SWt,JFace的Rcp 开发实例

    一个介绍RCp开发的实例项目,包含了SWt,JFace组件 的用法,特别适用于初学者

    Eclipse从入门到精通(第1版+第2版)随书光盘

    国内第一本详细讲解SWT/JFace开发的书; 国内第一本详细讲解如何开发Eclipse插件的书; 一本写给程序员的书,是作者实际项目经验的总结; 内容精简,去除了大量的冗余代码,含金量高; 配多媒体光盘,详细讲解软件的...

    Eclipse从入门到精通(第2版)

    RCP开发篇给出了一个基于数据库开发和面向对象分析设计的完整RCP项目实例;Web开发篇以Tomcat+Lomboz+Struts+ Hibernate为开发环境,详述了其下载、安装、配置和开发的全过程。本书以SWT/JFace、插件开发、RCP平台...

Global site tag (gtag.js) - Google Analytics