Ray Studio

博学之,审问之,慎思之,明辨之,笃行之
posts - 2, comments - 1, trackbacks - 0, articles - 2

SWT和SWT/JFace的GUI编程对比(一)

Posted on 2005-12-31 00:44 蓉之恋 阅读(305) 评论(0)  编辑  收藏 所属分类: SWT/JFace

本文主要对于SWTSWT/JFaceGUI编程的对比,将介绍两个SWT重要的类:DisplayShell ;JFaceApplicationWindow类,两者在程序设计的时候对基层系统窗口类的调用和实现的不同之处和优缺点的对比。本文主要参考了《SWT JFace In Action》。

一,首先我们还是从一个例子出发吧~

HelloSWT.java

package net.kilu.jopen.helloswt;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
public class HelloSWT
{
public static void main (String [] args)
{

// a, 配置和初始化
Display display = new Display();
Shell shell = new Shell(display);

//b, 添加widgetsshell
Text helloText = new Text(shell, SWT.CENTER);
helloText.setText("Hello SWT!");
helloText.pack();

//c, GUI操作
shell.pack();
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}

以上例子主要分成3部分:

a, 首先创建了DisplayShell类的两个实例,使得GUI操作能访问最底层平台的资源并创建主要的窗口察看组件。

b, 下一步添加Text文本组件到Shell中,这些文本是根据构建GUI的函数模块来添加配置的。Widgets和成组的widgets是以shell的子类添加的,也可以添加相应的监听器和事件都是根据需要的,在这里pack()方法是告诉ShellText组件能够使用可能大的空间。

c, 最后部分就是描述了GUI的操作了,从这点出发,所以的程序代码除了初始化变量外什么都不做,但是当Shellopen()方法被调用时,程序的主窗口和它的子类就显示出来了,只要Shell一直是被调用的,Display的实例使用readAndDispatch()方法保持循环执行并等待平台的事件的响应。当被用户使用关闭事件时,相关的Display对象(像ShellShell的子类等)就会跟系统底层平台断开。

SWT的类之间的通信和构建用户界面:

class communicationg structure of the SWT User Interface

 


只有注册用户登录后才能发表评论。


网站导航: