项目已更改JavaFX ListView控件的事件

时间:2014-09-16 14:32:46

标签: java listview javafx

我正在为JavaFX Item Changed Event控件寻找类似Item Count Changed EventListView的内容,或者只是说一下任何集合类型控件。

这是因为,我有一些按钮,我想只在ListView中至少有一个项目时启用,否则Button应该处于禁用状态。

我猜是可能会在ChangeListener控件中添加ListView。这是一种正确的方法。

任何建议我们如何才能实现这一目标。

3 个答案:

答案 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)

使用Bindings.isEmpty

添加基于ListView项目的绑定
button.disableProperty().bind(Bindings.isEmpty(listView.getItems()));