键盘事件是最简单,也是最常用的事件。一般来说,键盘事件有两种:键按下和键松开。SWT通过KeyListener响应键盘事件。
KeyListener接口
在SWT中,通过实现KeyListener接口来响应键按下和松开的事件。KeyListener接口如例程5所示。
例程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参数找到相应的按键值。
键盘事件实例
为了更深入地了解键盘事件,下面通过具体的实例演示如何响应键盘事件。该程序只是当事件触发时简单地打印出相应信息,在具体的实例中,读者可以根据需要进行修改,代码如例程6所示。
例程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”得到按键的字符,程序运行效果如图2所示。
图2 键盘事件实例