![](/img/trans.png)
[英]How do i properly move multiple items in a single listView control to another listveiw control in javaFx?
[英]Items changed event for JavaFX ListView control
我正在寻找类似JavaFX ListView
控件的Item Changed Event
或Item Count Changed Event
类的东西,或者对于任何集合类型控件来说,通常来说就是这样。
因为我有一些Button,所以仅当ListView中至少有一项时才希望启用,否则Button应该处于禁用状态。
我猜测可能是将ChangeListener
添加到ListView
控件。 那是正确的方法吗?
任何建议我们如何实现这一目标。
JavaFX Listview
提供了带有签名的方法
public final ObservableList<T> getItems()
您可以将侦听器添加到可观察列表,只要将项目添加到ListView
或从ListView
删除,就会调用该侦听器。
aListView.getItems().addListener(new ListChangeListener() {
@Override
public void onChanged(ListChangeListener.Change change) {
System.out.println("Detected a change! ");
}
});
其他“集合”控件也提供了类似的功能。
当有人调用ListView#setItems
并完全更改可观察列表时,这也将起作用:
InvalidationListener updateScrollBarListener = ...
aListView.itemsProperty().addListener((obs, old, current) -> {
if(old != null) {
old.removeListener(updateScrollBarListener);
}
if(current != null) {
current.addListener(updateScrollBarListener);
}
});
我一直在寻找一种使它更短的方法(也许使用Bindings
),但是到目前为止还没有找到。
使用Bindings.isEmpty
基于ListView
项添加Bindings.isEmpty
button.disableProperty().bind(Bindings.isEmpty(listView.getItems()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.