我试图创建一个绑定,以提供一个按钮,无论列表视图是否包含项目,都可以禁用/启用自身。但是,我无法正常工作。 这是我的初始化方法
private void initialize(){
runButton.disableProperty().bind(Bindings.isEmpty(listView.getItems());
}
将项目添加到listView对按钮的禁用/启用状态没有任何影响。
如果将上面的代码行放在另一个稍后在程序中调用的随机函数中,它将起作用。
我已经阅读到绑定可能是垃圾回收的,所以我也尝试创建绑定的一个字段,然后将其应用于disabledProperty。这也不起作用。
有什么想法吗?
编辑:
listView.setItems(observableFiles)
用于填充列表
答案 0 :(得分:4)
您是否在代码中的任何地方调用listView.setItems()
?如果是这样的话,那将解释为什么当您将其放入initialize
时,由于绑定到旧列表对象而ListView
使用新列表对象时,为什么它不起作用。
编辑:刚刚看到您的编辑,看来您确实做到了。调用setItems
后,尝试调用绑定。
答案 1 :(得分:0)
作为另一种选择,您可以将侦听器添加到 ListView itemsProperty ,如果更改后的列表为空,则在runButton上禁用触发器。