从表格中删除选择画笔
问题描述:
我正在使用两个表格的程序。第一个表格有一个选择侦听器,可将新项目添加到第二个表格。根据第一个表的值,我希望将另一个选择监听器添加到第二个表中。如果值是别的,我希望选择监听器被删除。我可以将选择侦听器添加到第二个表中,但我似乎无法删除它。如果第一个表需要第二个表具有选择侦听器,并且选择侦听器看起来是加倍的。从表格中删除选择画笔
tblFirst.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent arg0) {
TableItem ti = tblFirst.getSelection()[0];
String selectedText = ti.getText();
SelectionListener myListener = new SelectionListener(){
@Override
public void widgetSelected(SelectionEvent arg0) {
//do something here
}
}
if(selectedText.equals("sometext")) {
tblSecond.removeSelectionListener(myListener);
tblSecond.addSelectionListener(myListener);
}
}
采用上述例子中,是SelectionListener中每个I选择具有文本“SomeText”则会一个项目时添加。如果我选择了这个项目三次,SelectionListener会被触发三次。 removeSelectionListener不会首先删除selectionlistener。
我该如何做这项工作?
答
myListener
引用新实例,而不是上次创建和添加的实例。如果您每次创建一个新实例并且不保留对它的引用,则无法删除它。在选择处理程序方法之外创建myListener
一次。
虽然,整个添加和听众的去除似乎是一个kludge - 你则应在该秒听众一些条件来决定是否应对选择改变与否。