SWT/JFace学习总结
一. SWT/JFace的基本介绍
1.1 Face与其他图形界面设计工具的比较
Java图形界面实现方式有很多,比如AWT、SWING和SWT等。AWT和SWING不论是在速度上还是美观上都有很大的不足;对于比较庞大而复杂的系统,用AWT或SWING相很难实现,因为运行的速度会相当的慢。SWT直接使用操作系统提供的本地图形接口,具备本地化的Look & Feel,效率高且美观。因此,本项目选择SWT作为图形界面开发基础工具包。
图2-1为SWT原理图,图2-2为JFace原理图
图2-1 |
|
SWT把Win32的API简单的包装了一下,系统在SWT这一层调用的方法、传递的参数被原封不动的代理到了Win32层。这是SWT的核心思想。SWT有一个很重要的设计原则,那就是,SWT的API一对一的封装OS的API,完全忠实于操作系统的API实现的行为,如果有bug,那也是OS的bug,它不会尝试去“纠正”操作系统,因为那样会潜在的破坏本地化的一些行为。忠实于OS也使得调用者不必但心自己的SWT程序会跟OS的本地GUI有不一致的地方。因此,SWT拥有标准的与操作系统相同的外观,几乎没有人能看出你的程序是用Java写出来的,更为重要的是,其程序运行的效率可以和VC++写出的程序向媲美,而且开发的效率也不在AWT/SWING之下。
1.2 如何创建简单的SWT/JFace程序
1.2.1 如何在Eclipse中建立一个SWT/JFace工程
依次File→New→other 就会看到
然后按向导往下操作即可新建一个SWT/JFace工程,该工程跟其他的Jave工程没有多大的区别
1.2.2 一个简单的HelloWorld小例子
public class HelloWorld{ public static void main(String[] args){ Display display=new Display(); Shell shell=new Shell(display,SWT.V_SCROLL|SWT.SHELL_TRIM);
shell.setText("This is my label"); shell.setBounds(100,100,500,200); shell.setLayout(new FillLayout());
//Color red=new Color(display,255,0,0);
Label label1=new Label(shell,SWT.CENTER); label1.setText("Hello word"); label1.setLocation(100,100); label1.setBackground(new Color(display,0,200,0)); new Label(shell,SWT.CENTER).setText("software college of neu");
shell.open(); while(!shell.isDisposed()){ if(!display.readAndDispatch()) display.sleep(); } display.dispose();
} } |
程序的一些解释:
1. Display类:该类是SWT的基础类,它负责应用程序和本地操作系统之间建立交互。Display类是从Decive继承而来。
Display继承关系图
2. Shell类:该类是显示在桌面上的窗口,可以使顶级窗口(Top Level Shells)或者是对话框窗口(Secondary Or Dialog Shells)
3. 设置消息循环进行监听,以便监听到界面的操作:
while(!shell.isDisposed()){ if(!display.readAndDispatch()) display.sleep(); }
|
二. SWT基础
2.1 SWT基本组件
2.1.1关于按钮Button
类型 |
特点 |
创建代码举例 |
普通 |
呈突出状 |
Button bt = new Button(shell,SWT.PUSH) |
切换 |
单击后保持按下状态,再次单击时恢复。 |
Button bt = new Button(shell,SWT.TOGGLE) |
箭头 |
按钮带有小箭头 |
Button bt = new Button(shell , SWT.ARROW|SWT.UP)向上的箭头 |
单选 |
同一组只有一个选中 |
Group group = new Group(shell , SWT.SHADOW_ETCHED_OUT) group.setLayout(new FillLayout(SWT.VERTICAL) Button bt1 = new Button(group , SWT.RADIO|SWT.LEFT) Button bt2 = new Button(group, SWT.RADIO|SWT.RIGHT)
bt1.setSelection(true)表示选定该按钮 |
多选 |
同时可选几个按钮 |
Group group = new Group(shell , SWT.SHADOW_ETCHED_OUT) group.setLayout(new FillLayout(SWT.VERTICAL) Button bt1 = new Button(group , SWT.CHECK|SWT.LEFT) Button bt2 = newButton(group, SWT.CHECK|SWT.RIGHT)
bt1.setSelection(true)表示选定该按钮 |
2.1.2文本框Text
文本框是一个比较常用的组件,文本狂本身就支持复制,粘贴,删除等基本的操作。因此这些常用的基本操作不用我们再去设计。
1.文本框的比较特殊的样式
样式常量 |
描述 |
SWT.READ_ONLY |
只读文本框 |
SWT.PASSWORD |
输入密码框 |
SWT.MULTI |
可以输入多行的文本框 |
SWT.WRAP |
可以输入多行并且自动切换 |
SWT.H_SCROLL |
带水平滚动条的文本框 |
2.关于文本框的几个操作的方法
设置文字的方向 |
setOrientation(int orientation) |