删除 table 项上的选择侦听器
Remove a selection listener on a table item
我有一个 table,其中有多个 table 项目可用。
其中,为某些 table 项设置了背景色和前景色。
在选择彩色项目时,由于文本颜色为白色,因此文本难以阅读
所以,我需要将前景颜色更改为默认颜色。黑色的。
我是使用选择监听器完成的
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);
}
换色成功
但是现在我正在选择任何其他没有颜色的项目,所以我想删除上面的选择侦听器并将文本颜色设置为彩色即。白色的。
我不知道如何使用 this.table.removeSelectionListener
.
有人可以帮忙吗
您需要在某处记住选择侦听器,可能是 class 中管理 table 的字段。
private SelectionListener listener;
...
listener = new SelectionListener() ....
...
table.addSelectionListener(listener);
...
table.removeSelectionListener(listener);
确保只创建一次侦听器(可能在 class 构造函数中)。
另一种方法是只添加侦听器(一次),然后在侦听器中测试一个标志来决定是否设置前景。
我有一个 table,其中有多个 table 项目可用。 其中,为某些 table 项设置了背景色和前景色。
在选择彩色项目时,由于文本颜色为白色,因此文本难以阅读 所以,我需要将前景颜色更改为默认颜色。黑色的。 我是使用选择监听器完成的
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);
}
换色成功
但是现在我正在选择任何其他没有颜色的项目,所以我想删除上面的选择侦听器并将文本颜色设置为彩色即。白色的。
我不知道如何使用 this.table.removeSelectionListener
.
有人可以帮忙吗
您需要在某处记住选择侦听器,可能是 class 中管理 table 的字段。
private SelectionListener listener;
...
listener = new SelectionListener() ....
...
table.addSelectionListener(listener);
...
table.removeSelectionListener(listener);
确保只创建一次侦听器(可能在 class 构造函数中)。
另一种方法是只添加侦听器(一次),然后在侦听器中测试一个标志来决定是否设置前景。