删除 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 构造函数中)。

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