- 1、本文档共30页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 SWT技术 7.1 用SWT技术初始化Human对象 知识要点 ? SWT的基本结构 ? 系统资源的管理 线程 [实例] 在SWT图形环境下接收姓名,初始化一个“人”。 1.详细设计 class InstanceOfHuman implements SelectionListener{ 变量定义; public InstanceOfHuman(){ 初始化窗口和组件; 监听按钮; GUI调用; shell.pack(); shell.open(); while (!shell.isDisposed()){ if(!display.readAndDispatch()) display.sleep(); } display.dispose(); } public void widgetSelected(SelectionEvent e){ Human p = new Human(text.getText()); saylabel.setText(I am + p.name); } public void widgetDefaultSelected(SelectionEvent e){} } ? public class InstanceOfHumanTest { public static void main(String args[]) { new InstanceOfHuman(); } } 2.编码实现 1) 变量定义 略。 2) 初始化窗口和组件 语句: shell.setText(SWT); shell.setLayout(new FillLayout()); namelabel.setText(姓名); button.setText(确定); text.setText(); saylabel.setText( ); button.pack(); 分析:FillLayout是SWT的一种布局。 3) 监听按钮 语句: button.addSelectionListener(this); 分析:SelectionListener是SWT的一个监听器,Button的addSelectionListener()对该按钮监听。 4) GUI调用 语句: shell.pack(); shell.open(); while (!shell.isDisposed()){ if(!display.readAndDispatch()) display.sleep(); } display.dispose(); 分析:shell.open()打开窗口,同时显示窗口中的所有控件。while循环表示只要Shell窗口还未释放,Display对象就调用readAndDispathch()方法跟踪事件队列中注册的事件。一旦关闭窗口,Display的dispose()方法释放Display对象。 3.源代码 略。 4.测试与运行 5.技术分析 1) SWT的基本结构 编写SWT程序,首先从Display对象和Shell对象开始。Shell是一个窗口,创建Display实例的同时也启动了一个线程,该线程执行事件循环。SWT中所有的本地部件界面调用都是这个线程完成的。 2) 系统资源的管理 SWT并没采用JVM的垃圾回收机制去处理操作系统的资源回收问题,因为JVM的垃圾回收机制是不可控的。SWT只需两条简单的法则就可以放心的使用系统资源。第一条是“谁占用,谁释放”,第二条是“父构件被销毁,子构件也同时被销毁”。 3) 线程 任何操作平台的GUI系统中,对构件或一些图形API的访问操作都要被严格同步并串行化。SWT中存在一个唯一的“用户线程”,只有这个线程才能调用对构件或某些图形API的访问操作。 7.2 在左右两个SWT列表框中交换数据 知识要点 ? Control类 ? 按钮 ? 标签 ? 文本框 ? 下拉框 ? 列表 ? 组件的风格 [实例] 在SWT图形设计左右两个列表框,单击“”或“”可以实现将左侧列表框中的值移动到右侧列表框中,也可以将右侧列表框中的值移到左侧列表框中。 1.详细设计 class ListTest{ main( ){ 创建display和shell对象; 定义左右列表框中的数据; 初始化左侧字符串; 定义左侧列表框; 定义右侧列表框; //创建事件监听类,为内部
文档评论(0)