我正在为JavaFX Item Changed Event
控件寻找类似Item Count Changed Event
或ListView
的内容,或者只是说一下任何集合类型控件。
这是因为,我有一些按钮,我想只在ListView中至少有一个项目时启用,否则Button应该处于禁用状态。
我猜是可能会在ChangeListener
控件中添加ListView
。这是一种正确的方法。
任何建议我们如何才能实现这一目标。
答案 0 :(得分:2)
JavaFX Listview
提供了一个带签名的方法
public final ObservableList<T> getItems()
您可以向可观察列表添加一个侦听器,只要在ListView
中添加或删除项目,就会调用该侦听器。
aListView.getItems().addListener(new ListChangeListener() {
@Override
public void onChanged(ListChangeListener.Change change) {
System.out.println("Detected a change! ");
}
});
其他“集合”控件也提供了类似的功能。
答案 1 :(得分:0)
当有人调用ListView#setItems
并完全更改可观察列表时,这也会有效:
InvalidationListener updateScrollBarListener = ...
aListView.itemsProperty().addListener((obs, old, current) -> {
if(old != null) {
old.removeListener(updateScrollBarListener);
}
if(current != null) {
current.addListener(updateScrollBarListener);
}
});
我一直在寻找一种方法来缩短它(可能使用Bindings
)但到目前为止尚无法找到它。
答案 2 :(得分:0)
ListView
项目的绑定
button.disableProperty().bind(Bindings.isEmpty(listView.getItems()));