作者:陈刚,桂林人,97年毕业于广西师范大学数学系,暂于IBM中国研究中心以外包人员身份从事软件开发(2004.2-?),专注基于java平台的软件开发。
email: glchengang@hotmail.com
blog: glchengang.yeah.net
一、最简单的Dialog。
在上一章中我们的Hello World是调用了SWT中已写好的一个对话框,如果我们要自己写一个对话框怎么办呢。很简单只需要继承JFace中的Dialog类,然后重写相应的方法就可以了。代码如下:
|
import org.eclipse.jface.dialogs.Dialog; //注意这个是jface的Dialog,不是swt的Dialog public class DialogSample extends Dialog { /** /** /** } |
这里出现了几个新的变量类型,在此简单解释如下:
- Composite :本文中翻译成面板。任何SWT/JFace的界面控件都必须建立在某个面板上面,如上面的new Text(parent, SWT.BORDER),就是将文本框建立在参数传入的面板parent上。面板还能嵌套面板,在建立一个图形界面时常将各个面板层层叠叠的排放在一起。Composite 将是界面设计中使用最平凡的一个类。
- Control 是Composite 的父类,而Shell 是Composite 的一个子类。用到的场合不是太多,也没太必要了解很清其本质含义。要依着我的开发经验的理解Control (控制):如上面例程中createDialogArea方法就要返回一个Control 表示这些界面元素是由谁主控,或者是谁是主面板包含住了所有控件(我自己猜的)。Shell表示一个界面的外壳,它能得到比Composite 更多的功能。
- 希望通过如下继承关系图有助于您理解Control、Composite、Shell三者间的关系。

然后将上一章的SampleAction.java中的run方法改写如下:
| public void run(IAction action) { /* * 也可以new DialogSample(null); 传一个NULL这时是单开一个窗口 * 要看两者的区别,注意window操作系统任务条上的变化。 * 一般来说都应该传一个Shell类型的参数,至少这个Shell来自何处都一样。 */ Dialog dialog = new DialogSample(window.getShell()); dialog.open(); } |
上一页 下一页






