快速业务通道

SWT和JFace,第1部分: 简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
mposite parent = ...; : // create a push button Button clear = new Button(parent, SWT.PUSH); clear.setText("Clea&r");

名称中的 & 导致利用紧接着的一个字母创建一个加速器,允许通过 Ctrl+<字母> 顺序的方式按下按钮(控件顺序由主机操作系统决定)。

SWT和JFace,第1部分: 简介(4)

时间:2011-03-20 IBM Barry Feigenbaum

事件监听器

通常,您可能想在选择按钮(特别是某种推式按钮)的时候执行一些操作。您可以通过向该按钮添加一个 SelectionListener(在 org.eclipse.swt.events 包中)做到这一点。当按钮状态发生改变时(通常是按钮被按下),就会生成事件。清单 5 在单击 Clear 按钮时输出一条消息。

清单 5. 按钮事件处理程序

import org.eclipse.swt.events.*; : // Clear button pressed event handler clear.addSelectionListener(new SelectionListener() {    public void widgetelected(selectionEvent e) {      System.out.println("Clear pressed!");    }    public void widgetDefaultSelected(selectionEvent e) {      widgetelected(e);    } });

此代码使用了一个匿名的内部类,但您还可以使用指定的内部类或单独的类作为监听器。多数包含两个或更多方法的 ...Listener 类还有一个类似的 ...Adapter 类,这个类提供了一些空的方法实现,并且可以减少您需要编写的代码数量。例如,还有一个 SelectionAdapter 类,这个类实现了 SelectionListener。

注意,在这些方法中执行的操作必须快速完成(通常不足一秒时间),或者说 GUI 的反应将是迟钝的。更长时间的操作(比如访问文件)需要单独的线程,但那是以后某期文章的主题。

复合控件

至此,我们已经讨论了一些单独的控件。在多数 GUI 中,许多控件被组合在一起以提供丰富的用户体验。在 SWT 中,这种组合是通过 Composite 类实现的。

复合控件可以在任何级别上进行嵌套,并且可以混合和匹配控件,将它们作为子控件进行组合。这样做可以极大地减少 GUI 开发的复杂性,并为 GUI 代码重用(通过封装内部 GUI)创造了机会。复合控件可以是有边界的,并且这些边界很容易在视觉上产生混淆,或者它们也可以是无边界的,无缝集成到更大的组中。

清单 6. 创建一个有边界的复合控件。

清单 6. 创建一个有边界的复合控件

import org.eclipse.swt.widget.*; : Composite parent = ...; : Composite border = new Composite(parent, SWT.BORDER);

除了边界之外,Group 复合子类还支持标题。在定义排他性按钮集合时,组通常被用来包含单选类型的按钮。

清单 7 创建了一个有边界的组。

清单 7. 创建一个有边界的组

import org.eclipse.swt.widget.*; : Composite parent = ...; : Group border = new Group(parent, SWT.SHADOW_OUT); border.setText("Group Description");

SWT和JFace,第1部分: 简介(5)

时间:2011-03-20 IBM Barry Feigenbaum

shell

shell 是一种可能没有父复合控件的复合控件(框架或窗口);此外,它还有一个作为父控件的 Display,这通常也是默认设置。shell 有很多种样式,但最常见的样式是 SWT.SHELL_TRIM 或 SWT.DIALOG_TRIM。shell 可以是模态的,也可以是非模态的。模态 shell 常常用于对话框,防止父 GUI(如果有的话)在关闭子 shell 之前被处理。

清单 8 创建了一个框架样式的顶级非模态 shell。

清单 8. 创建一个顶级 shell

import org.eclipse.swt.widget.*; : Shell frame = new Shell(SWT.SHELL_TRIM); :

shell 可以有子 shell。这些子 shell 是与父 shell 相关的独立桌面窗口(也就是说,如果父 shell 关闭,那么其所有子 shell 也将

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号