删除表项上的选择侦听器



我有一个表,其中多个表项可用。其中,对某些表项设置了背景色和前景色。

在选择有颜色的项目时,由于文本颜色为白色,因此文本难以阅读因此,我需要将前景色更改为默认的ie。黑色的。我使用了选择监听器

private SelectionListener selectionListener;
private void mouseTrackListener() {
selectionListener = new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
((TableItem) e.item).setForeground(null);
}
}
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
};
this.table.addSelectionListener(selectionListener);
this.table.removeSelectionListener(selectionListener);
}

并且颜色被成功地改变了。

但是现在我选择了任何其他没有颜色的项目,所以我想删除上面的选择监听器并将文本颜色设置为有色的ie。白色我不知道如何使用this.table.removeSelectionListener

谁来帮帮我。

您需要在某个地方记住选择侦听器,可能是管理表的类中的一个字段。

private SelectionListener listener;
...
listener = new SelectionListener() ....

...
table.addSelectionListener(listener);
...
table.removeSelectionListener(listener);

确保只创建一次侦听器(可能在类构造函数中)。

另一种方法是只添加侦听器(一次),然后在侦听器中测试一个标志,以决定是否设置前台。

最新更新