SWT的很多组件都实现了选择组件事件的监听机制,例如按钮、菜单项的选择,当选择了相关的菜单项或组件时,将触发相应的事件。
SelectionListener接口
在SWT中,通过实现SelectionListener接口来响应选择组件事件。SelectionListener接口如例程11所示。
例程11 SelectionListener.java
package org.eclipse.swt.events; import org.eclipse.swt.internal.SWTEventListener; public interface SelectionListener extends SWTEventListener { public void widgetSelected(SelectionEvent e); public void widgetDefaultSelected(SelectionEvent e); }
其中,widgetSelected表示组件被选择事件的响应方法,widgetDefaultSelected表示组件默认选择事件的响应方法,SelectionEvent为系统传入的选择事件的参数。
选择组件事件实例
为了更深入地理解选择组件事件,下面通过具体的实例演示如何响应选择组件事件。该程序只是简单地打印组件被移动或改变大小的信息,在具体的实例中,读者可以根据需要进行修改,代码如例程12所示。
例程12 SelectonListenerExample.java
public class SelectonListenerExample { public static void main(String[] args) { Display display = new Display(); final Shell mainShell = new Shell(display); Button button = new Button(mainShell, SWT.PUSH); button.setText("Close Me!"); button.setBounds(10, 10, 100, 30); // 添加选择组件事件 button.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent event) { System.out.println("select button"); mainShell.close(); } public void widgetDefaultSelected(SelectionEvent e) { // 不执行任何操作 } }); mainShell.open(); while (!mainShell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }
上例中只是添加了一个按钮,当选择按钮时关闭当前窗口。