gpt4 book ai didi

javafx-8 - 当监听器执行时移除监听器

转载 作者:行者123 更新时间:2023-12-02 19:32:31 25 4
gpt4 key购买 nike

我有一种特殊情况,我想向可见属性添加监听器,然后在该属性不再可见时删除监听器。我只想让监听器触发一次,然后将其删除。

ChangeListener<Boolean> listener= (obs, ov, nv) -> {
if(!nv){
//do my processing
node.visibleProperty().removeListener(listener); }
}
};
node.visibleProperty().addListener(listener);

但是它告诉我变量监听器可能尚未初始化。如果我尝试将其设为空,然后创建它,它会提示它实际上不是最终的

这可能吗?

最佳答案

您可以将 listener 设为实例变量,而不是局部变量,也可以使用匿名内部类(在其中您可以使用关键字 this 来引用自身):

ChangeListener<Boolean> listener = new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> obs, Boolean ov, Boolean nv) {
if (! nv) {
node.visibleProperty().removeListener(this);
}
}
};
node.visibleProperty().addListener(listener);

关于javafx-8 - 当监听器执行时移除监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46458004/

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