initialize方法中的JavaFX绑定



我正试图创建一个绑定,为按钮提供一种在列表视图中是否包含项时禁用/启用其自身的方法。然而,我不能让它发挥作用。这是我的初始化方法

private void initialize(){
runButton.disableProperty().bind(Bindings.isEmpty(listView.getItems());
}

将项目添加到列表视图对按钮的禁用/启用状态没有任何影响。

如果我把上面的代码行放在程序中稍后调用的另一个随机函数中,它就可以工作了。

我读到绑定可能是垃圾收集的,所以我也尝试创建绑定的字段,然后应用于disabledProperty。这也不起作用。

有什么想法吗?

编辑:

listView.setItems(observableFiles)

用于填充列表

是否在代码中的任何位置调用listView.setItems()?如果是这样的话,这将解释为什么当你把它放在initialize中时它不起作用,因为你绑定到了旧的列表对象,而ListView正在使用新的列表对象。

编辑:刚刚看到你的编辑,看来你真的做到了。请在调用setItems之后尝试调用绑定。

作为另一种选择,您可以将监听器添加到ListViewitemsProperty,如果更改的列表为空,则在您的runButton上禁用触发器。

最新更新