快速业务通道

SWT/JFace入门指南之让SWT程序动起来 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
,但是为了能够通过编译器的编译,我却不得不写一个空白的widgetDefaultSelected()方法(因为SelectionListener是一个接口,你必须实现它所有的方法)。

幸运的是,swt帮我们解决了这个问题,途径就是使用adapter。在swt中,对应于一个XyzListener都有一个XyzAdapter,adapter都是抽象类并且实现了对应的listener接口,它为对应listener接口中的每个方法都定义了一个默认实现(基本上就是什么都不做),我们在使用时候只需要override掉自己感兴趣的方法就可以了。

结合上一小节中的代码,如果使用SelectionAdapter代替SelectionListener的话,我们的代码就可以这样写:

button.addSelectionListener(new SelectionAdapter(){   public void widgetSelected(SelectionEvent event) {    handleSelectionEvent();   } });

这样是不是很方便呢?

EventObject:事件处理的附加信息

在处理各种事件时,我们需要一些附加信息,而EventObject给我们提供了这些信息。

我们先来看下面这个简单的小程序,在这段程序中,我们创建了两个文本框,当在第一个文本框输入时,第二个文本框中显示输入的字符。

1 public class EventDemo2 { 2 3 Text logText; 4 5 public EventDemo2() { 6 Display display = new Display(); 7 Shell shell = new Shell(display,SWT.SHELL_TRIM); 8 9 GridLayout layout=new GridLayout(); 10 layout.numColumns=2; 11 shell.setLayout(layout); 12 shell.setText("Event demo"); 13 14 Label label1=new Label(shell,SWT.RIGHT); 15 label1.setText("text1:"); 16 Text text1=new Text(shell,SWT.NONE); 17 18 text1.addKeyListener(new KeyAdapter(){ 19 public void keyPressed(KeyEvent e) { 20 Text t=getLogText(); 21 String s=t.getText(); 22 t.setText(String.valueOf(e.character)); 23 } 24 } 25 ); 26 27 Label label2=new Label(shell,SWT.RIGHT); 28 label2.setText("text2:"); 29 Text text2=new Text(shell,SWT.NONE); 30 text2.setEditable(false); 31 text2.setBackground(new Color(display,255,255,255)); 32 setLogText(text2); 33 34 shell.pack(); 35 shell.open(); 36 37 while (!shell.isDisposed()) { 38 if (!display.readAndDispatch()) { 39 display.sleep(); 40 } 41 } 42 display.dispose(); 43 } 44 /** 45 * @param args 46 */ 47 public static void main(String[] args) { 48 EventDemo2 demo2=new EventDemo2(); 49 } 50 /** 51 * @return Returns the logText. 52 */ 53 public Text getLogText() { 54 return logText; 55 } 56 /** 57 * @param logText The logText to set. 58 */ 59 public void setLogText(Text logText) { 60 this.logText = logText; 61 } 62 } 63

SWT/JFace入门指南之让SWT程序动起来(3)

时间:2011-01-04

代码段 7

你可能没有兴趣仔细研究这么长的代码,那么让我们只关注这一小段代码:

text1.addKeyListener(new KeyAdapter(){   public void keyPressed(KeyEvent e) {    Text t=getLogText();    String s=t.getText();    t.setText(String.valueOf(e.character));   } } );

在这段代码中,我们使用了KeyAdapter来处理键盘事件,而keyPressed会在有键按下时候被调用,我们在函数中使用了KeyEvent类型的参数e,并且通过e.character得到了按下键对应的字符。

各种EventObject(例如上面示例中的KeyEvent)在事件处理函数中作为参数出现,它们可能有不同的属性和方法,利用这些特性我们可以做很多有意思的事情。

我们下面只简单介绍几种EventObject,它们分别是对应于窗口事件(ShellListener,Sh

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号