14.3 键 盘 事 件
键盘事件是最简单也是最常用的事件。一般来说,键盘事件有两种:键按下和键松开。SWT通过KeyListener响应键盘事件。
14.3.1 KeyListener接口
在SWT中,通过实现KeyListener接口来响应键按下和松开的事件。KeyListener接口如例程14-5所示。
例程14-5 KeyListener.java
package org.eclipse.swt.events;
import org.eclipse.swt.internal.SWTEventListener;
public interface KeyListener extends SWTEventListener {
public void keyPressed(KeyEvent e);
public void keyReleased(KeyEvent e);
}
其中,keyPressed表示键按下事件的响应方法,keyReleased表示键松开事件的响应方法,KeyEvent为系统传入的键盘事件的参数,用户可以通过KeyEvent参数找到相应的按键值。
14.3.2 键盘事件实例
为了更深入地了解键盘事件,下面通过具体的实例演示如何响应键盘事件。该程序只是当事件触发时简单地打印出相应信息,在具体的实例中,读者可以根据需要进行修改,代码如例程14-6所示。
例程14-6 KeyListenerExample.java
public class KeyListenerExample {
Display display;
Shell shell;
KeyListenerExample() {
display = new Display();
shell = new Shell(display);
shell.setSize(250, 200);
shell.setText("A KeyListener Example");
Text text = new Text(shell, SWT.BORDER);
text.setBounds(50 ,50 ,100, 20);
text.addKeyListener(new KeyListener() {
public void keyPressed(KeyEvent e) {
System.out.println("key Pressed -"+e.character);
}
public void keyReleased(KeyEvent e) {
System.out.println("key Released -"+e.character);
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
public static void main(String[] args) {
new KeyListenerExample();
}
}
程序中通过匿名内部类实现监听器,这种方式在实例开发中会经常用到。另外可以通过KeyEvent取得按键的值,如上例的“e.character”得到按键的字符,程序运行效果如图14-2所示。

图14-2 键盘事件实例






