和一般的入门程序一样,我们先写一个简单的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_核心应用》说是核心,其实都是些基础的入门代码。
如果对知识点有不同意见,请留言
文章列表
===========================================================
相关推荐
SWT (Standard Widget Toolkit) 和 JFace 是两个在Java中用于构建图形用户界面(GUI)的重要库,尤其在开发Eclipse插件时被广泛应用。它们是开源项目,由Eclipse基金会维护,为开发者提供了丰富的控件和高级UI设计...
标题中的"swt/jface.jar"是一个关键组件,它在Java开发环境中用于构建用户界面。SWT(Standard Widget Toolkit)是IBM开发的一个开源GUI库,它提供了与原生操作系统更紧密集成的图形用户界面控件。JFace是建立在SWT...
SWT (Standard Widget Toolkit) 和 JFace 是两个用于构建 Java 应用程序的图形用户界面(GUI)的库,它们都是由 Eclipse 开源项目提供的。SWT 是一个直接与操作系统进行交互的底层库,提供了丰富的控件和组件,而 ...
SWT (Standard Widget ...这个例子是一个学习 SWT 和 JFace 基础的好起点,特别是对于那些想要开发 Eclipse RCP 应用程序的人来说。通过这个例子,你可以理解如何结合使用这两个库来创建具有实际功能的界面组件。
全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其...
Eclipse SWT(Standard Widget Toolkit)和JFace是Java开发中用于构建图形用户界面(GUI)的库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常重要。这两个库提供了丰富的组件和框架,使得...
本文将深入探讨这两个技术,并结合《SWT/JFace in Action》这本书的相关内容,提供一个全面的知识框架。 SWT是Java的GUI工具包,它提供了原生的控件,使得Java应用程序的用户界面可以与操作系统深度融合,从而获得...
JFace则是建立在SWT之上的一个高级UI框架,它简化了SWT的使用,提供了数据绑定、视图模型以及事件处理机制,使开发者能够更专注于业务逻辑而不是UI细节。 1.2 SWT/JFACE 与 SWING 的特点及区别 1.2.1 Swing的特点 ...
Eclipse SWT/JFace是Eclipse框架中的两个关键组件,它们为构建用户界面提供了强大的支持。SWT(Standard Widget Toolkit)是Eclipse的本机GUI库,而JFace是基于SWT构建的更高层次的抽象层,它简化了UI开发过程。 ...
【SWT/JFace实例开发】是一份针对Java GUI编程的学习资源,主要聚焦于SWT(Standard Widget Toolkit)和JFace这两个强大的图形用户界面库。SWT是Eclipse项目的一部分,它提供了一套与操作系统直接交互的原生控件,...
Eclipse SWT (Standard Widget Toolkit) 和 JFace 是两个在Java编程环境下用于构建图形用户界面(GUI)的重要库,尤其在开发Eclipse插件和RCP(Rich Client Platform)应用程序时非常常见。SWT是Eclipse项目的一个...
全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其...
- **SWT与JFace的目的**:SWT(Standard Widget Toolkit)和JFace是Eclipse平台提供的两个核心工具包,用于构建高性能的图形用户界面(GUI)。SWT主要负责底层的界面元素渲染,提供跨平台的本地外观和感觉;而JFace...
同时,Eclipse RCP(Rich Client Platform)框架就是基于SWT和JFace构建的,它为开发者提供了一个完整的框架,用于创建功能强大的桌面应用程序。 在Eclipse SWT/JFace核心应用中,以下几个关键知识点不容忽视: 1....
"firstSWT"可能是第一个SWT示例的目录或文件,通常用来介绍基本的SWT概念和用法。在这个例子中,开发者可能会看到如何创建一个简单的SWT窗口,添加基本的控件,以及如何响应用户的交互事件。 学习这些实例,你将能...
6. ** SWT/JFace与Eclipse RCP**:如果例子深入到Eclipse Rich Client Platform (RCP)的开发,你还将学习如何构建完整的桌面应用程序,包括插件系统、工作台管理、透视图和编辑器等。 7. **SWT/AWT/Swing的比较**:...
SWT (Standard Widget Toolkit) 和 JFace 是两个与Java GUI编程密切相关的库,它们是Eclipse项目的一部分。本文将深入探讨这两个库的核心概念、功能以及API的使用。 SWT是Java的一个GUI(图形用户界面)工具包,它...
全书共分5篇,第1篇介绍了SWT产生的背景以及SWT的一些基本概念和基础知识。第2篇介绍了SWT基本控件的使用,以及事件处理、布局等SWT基本知识的应用。第3篇介绍了关于SWT的高级应用。第4篇介绍了JFace框架的知识及其...
Eclipse SWT(Standard Widget Toolkit)和JFace是用于构建Eclipse插件和RCP(Rich Client Platform)应用程序的重要工具包。这两个库都是Eclipse IDE的一部分,提供了与操作系统底层交互的能力,使得开发者可以创建...
SWT(Standard Widget Toolkit)和JFace是两个与Java GUI编程密切相关的库,它们都是Eclipse项目的一部分。本文将深入探讨这两个技术,并基于提供的文件名"2-Basic.pdf"和"3-Advanced.pdf"来推测可能包含的基础知识...