繁体   English   中英

JavaFX ListView控件的项目更改事件

[英]Items changed event for JavaFX ListView control

我正在寻找类似JavaFX ListView控件的Item Changed EventItem 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM