初始化方法中的JavaFX绑定

时间:2018-11-13 09:37:12

标签: javafx

我试图创建一个绑定,以提供一个按钮,无论列表视图是否包含项目,都可以禁用/启用自身。但是,我无法正常工作。 这是我的初始化方法

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

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

如果将上面的代码行放在另一个稍后在程序中调用的随机函数中,它将起作用。

我已经阅读到绑定可能是垃圾回收的,所以我也尝试创建绑定的一个字段,然后将其应用于disabledProperty。这也不起作用。

有什么想法吗?

编辑:

listView.setItems(observableFiles)

用于填充列表

2 个答案:

答案 0 :(得分:4)

您是否在代码中的任何地方调用listView.setItems()?如果是这样的话,那将解释为什么当您将其放入initialize时,由于绑定到旧列表对象而ListView使用新列表对象时,为什么它不起作用。

编辑:刚刚看到您的编辑,看来您确实做到了。调用setItems后,尝试调用绑定。

答案 1 :(得分:0)

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