Eclipse插件开发之基础篇(6) SWT简介

本文介绍了SWT(Standard Widget Toolkit)的基本概念及其在Eclipse平台上的应用。SWT是一种跨平台的GUI工具包,用于创建高性能的用户界面,支持多种操作系统。文章详细解释了SWT的特性、开发环境及基本应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 SWT(Standard Widget Toolkit)是为Eclipse平台开发的GUI工具包。SWT构建了Eclipse的UI,但SWT并不依赖Eclipse,也可以被单独使用。

 1. SWT的特征

  现在的Eclipse中绝大部分的UI都由SWT的组件构成。

  SWT最大的特征就是不实现Pure Java,对各个OS平台API的依赖在必要的时候才会通过java去调用。由此反映速度和OS中的自然应用相同。另外,依赖于OS API部分都被封装在了SWT内部,用SWT开发出来的应用程序,在更换了SWT库或者OS的时候都不会受到影响。

 2.SET的开发环境和运行环境

  SWT不仅可以用于开发Eclipse的插件,也可以用于单独的GUI的开发。作为单独的应用程序运行时,需要与OS对应的SWT库。

  请确认在Eclipse的plugins文件夹中有SWT的JAR文件存在(Windows的情况下是org.eclipse.swt.win32.win32.x86_3.4.1.v3449c.jar等)。

  发布使用SWT开发的应用程序时,SWT库文件也要一起发布。单独的SWT库在Eclipse的下载页面就可以找到。页面下方的[Binary and Source]发布了各种OS下的版本。现在已经提供了Windows、WindowsCE、Linux、Solaris、QNX、AIX、HP-UX、MacOS的运行库。

 3.SWT的基本

 最简单的SWT应用

  下面代码是最简单的SWT应用程序。

代码1

public static void main(String[] args) {
	// 生成Display的对象①
	Display display = new Display();
	// 生成Shell的对象②
	final Shell shell = new Shell(display);
	shell.setText("SWT的例子");
	shell.setLayout(new FillLayout(SWT.VERTICAL));
	// 生成Label对象③
	Label label = new Label(shell, SWT.BORDER);
	label.setText("请点按钮");
	// 生成Button对象③
	final Button button = new Button(shell, SWT.PUSH);
	button.setText("OK");
	// 为Button的时间定义监听器④
	button.addSelectionListener(new SelectionAdapter() {
		public void widgetSelected(SelectionEvent arg0) {
			MessageBox messageBox = new MessageBox(shell, SWT.OK
					| SWT.ICON_INFORMATION | SWT.APPLICATION_MODAL);
			messageBox.setMessage("按下了(" + button.getText() + ")按钮");
			messageBox.open();
		}
	});
	//打开shell对象 ⑤
	shell.pack();
	shell.open();
	//结束前一直循环 ⑥
	while (!shell.isDisposed()) {
		if (!display.readAndDispatch()) {
			display.sleep();
		}
	}
	//释放display对象⑦
	display.dispose();
}

 

  1.生成Display的对象

  Display对象是平台GUI层和SWT间的连接。Widget等,SWT的GUI组件通过Display对象和执行平台提供的API。

 

  2.生成Shell的对象

  Shell对象负责画面窗体的显示。通过Shell对象可以调整窗体的大小,标题以及对窗体进行布局管理。

 

  3.在Shell对象上生成Widget

  SWT中把输入框、按钮等GUI控件称为Widget。这个步骤为前一步生成的window配置了Widget。并且对每个控件的text属性、在画面上的位置等等做了设置。

 

  4.为Button的事件定义监听器

  按下按钮、选择下拉框等等的用户动作、在Widget中通过事件进行传达。这个步骤为事件生成了对应的处理--listener,并且注册到了Widget上。

 

  5.打开shell对象

  对Widget的设置全部结束后,就可以让窗体显示了。窗体显示时需要调用Shell对象的open方法。open方法在内部启动一个新线程对窗体显示。

 

  6.结束前一直循环

  因为SWT的应用会启动一个新的线程,如果不阻塞主线程的话整个应用就会结束了。为了不让主线程结束,我们用了一个while循环,知道shell关闭位置一直循环。

 

  7.释放display对象

  SWT并不是纯java的,框架会依赖一些自然语言的API。所以,生成的SWT对象要显式的调用dispose方法来执行销毁动作。但是,dispose方法会递归调用子对象的dispose方法,所以想label和button之类的Widget就不用再调用dispose方法了。 

 

 转载请注明出处,http://www.cnblogs.com/liuzhuo.

转载于:https://www.cnblogs.com/liuzhuo/archive/2010/09/01/eclipse_plugin_1_3_1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值