gpt4 book ai didi

java - 从表中删除选择监听器

转载 作者:行者123 更新时间:2023-11-29 06:05:15 24 4
gpt4 key购买 nike

我正在开发一个使用两个表的程序。第一个表有一个选择监听器,可以将新项目添加到第二个表。根据第一个表的值,我想将另一个选择监听器添加到第二个表。如果该值是其他值,我希望删除选择监听器。我可以将选择监听器添加到第二个表中,但我似乎无法将其删除。如果第一个表要求第二个表有selection listener,selection listener就出现双倍了。

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);
}
}

在上面的示例中,每次我选择带有文本“sometext”的项目时都会添加 SelectionListener。如果我选择了该项目三次,则 SelectionListener 被触发三次。 removeSelectionListener 不会首先删除选择监听器。

我如何使它工作?

最佳答案

myListener 指的是一个新实例,而不是上次创建和添加的实例。如果您每次都创建一个新实例并且不保留对它的引用,则无法删除它。在选择处理程序方法之外仅创建一次 myListener

虽然,整个监听器的添加和删除看起来像一个kludge - 你应该在 second 监听器中设置一些条件来决定是否对选择更改使用react。

关于java - 从表中删除选择监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com