我们仍然是从一个最简单的Hello,world!开始介绍JFace。为了更形象一些,首先把程序列出来:
1
2 public class HelloJface extends Window {
3
4 public HelloJface(Shell arg0) {
5 super(arg0);
6 }
7 @Override
8 protected Control createContents(Composite parent) {
9 Text text = new Text(parent, SWT.NONE);
10 text.setText( " Hello,world! " );
11 return parent;
12
13 }
14 /* *
15 * @param args
16 */
17 public static void main(String[] args) {
18
19 HelloJface demo = new HelloJface( null );
20 demo.setBlockOnOpen( true );
21 demo.open();
22 Display.getCurrent().dispose();
23
24 }
25 }
26
2 public class HelloJface extends Window {
3
4 public HelloJface(Shell arg0) {
5 super(arg0);
6 }
7 @Override
8 protected Control createContents(Composite parent) {
9 Text text = new Text(parent, SWT.NONE);
10 text.setText( " Hello,world! " );
11 return parent;
12
13 }
14 /* *
15 * @param args
16 */
17 public static void main(String[] args) {
18
19 HelloJface demo = new HelloJface( null );
20 demo.setBlockOnOpen( true );
21 demo.open();
22 Display.getCurrent().dispose();
23
24 }
25 }
26
代码段12
首先我们从这段代码来看一下使用JFace和单纯地使用swt写程序有什么不一样:
在swt程序中,我们需要自己创建Display,自己创建Shell,但是在这里,我们只需要:
创建一个继承自Window(org.eclipse.jface.window.Window)的类
在这个类的createContents方法中为窗口添加部件
将这个对象的blockOnOpen属性设定为true,这个属性的含义就和它的名字一样,窗口会一直保持打开的状态(接收各种事件)直到被关闭。
调用这个对象的open方法即打开了窗口
由于设定了blockOnOpen,窗口会保持接受各种事件,知道用户(或者程序)关闭了它。
在关闭以后,程序继续向下运行,我们需要将资源释放掉,所以有了这样一句话:
Display.getCurrent().dispose();
其中Display.getCurrent()得到了程序的display对象,并进而调用dispost()方法释放了各种资源。
其实这也是我们写一个JFace程序一般的步骤,当然我们可能还会添加事件处理之类,但是大体上都是这样的。
因为这个程序运行的结果其实和我们以前swt的Hello,world!是一样的,所以在这里我也不再贴图了。大家可以自己运行看一下。