SWT事件处理的常用写法

<一>匿名内部类
匿名内部类是最简单的一种方法,适用于对简单的事件处理:
list.addSelectionListener(
    new SelectionListener(){
});
这种写法最简单,缺点是不能够使代码重用,使用这种方法注册的监听器,一旦注册后就不易移除,所以要解决这个问题,可以使用内部类的方法
<二>
SelectionListener listener = new SelectionListener(){
    public void widgetSelected(SelectionEvent e){
    }
    public void widgetDefaultSelected(){
    }
}
list.addSelectionListener(listener );
list.removeSelectionListener(listener );
使用了内部类后,不仅为控件注册监听器,也可在需要的时候移除该监听器,并且也可以为多个控件注册同一个监听器。
另外,通过内部类也可以处理不同的事件,例如有两个按钮,分别注册了同一个监听器对象,如何区分是哪个按钮所触发的事件。
<三>
实现的接口类
监听器本质就是一个接口,就可以利用接口的一般方法来处理,例如,有这样一个雷实现了SelectionListener接口,代码如下:
public class MySelectionListener implements SelectionListener {

@Override
public void widgetDefaultSelected(SelectionEvent e) {
}

@Override
public void widgetSelected(SelectionEvent e) {
}
}
内部类的方法适用于在一个类中处理各种事件,而在实际项目中往往是将所有的事件集中到一个类中,这样其它类中也能够重用该事件处理的代码,所以,实现接口类的方式在项目中是经常适用的。
<四>
继承的类方法
对于有对应的适配器类,还可以通过继承适配器类,然后覆盖适配器类中的方法来实现。
public class MyAdapter extends SelectionAdapter {
public void widgetSelected(SelectionEvent e) {
System.out.println("点击了按钮");
}
public void widgetDefaultSelected(SelectionEvent e) {
}
}
通过继承的方式确保该类没有继承其它类,如果此时该类继承其它的类,那么只能采用实现接口的方法,如果该类没有继承其它类,那么两者都可以使用。

你可能感兴趣的:(SWT事件处理的常用写法)