关于Checkbox更改的Javafx更新tableview

时间:2016-12-11 18:48:50

标签: java checkbox javafx tableview listener

我有大量数据,我在JavaFX中使用TableView显示。在JavaFX 8 Sortung Filtering的帮助下,我能够根据输入(TextField)实现过滤器。一个条目只能有几个不同的状态,所以我想用复选框快速选择。
例如:用户希望查看状态为“正在进行”或“已完成”的所有行。因此,他检查具有特定状态的两个复选框。

如何实现特定的Listener,TableView将仅显示已过滤的数据?

到目前为止我的代码:

ChangeListener<Boolean> cbStateChangeListener = new ChangeListener<Boolean>() {  
    @Override
        public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) {
            if (new_val){

            }
        }
    };

如何进行if语句?

2 个答案:

答案 0 :(得分:1)

使用复选框的当前状态重新应用视图填充?

答案 1 :(得分:1)

您可以简单地将predicate FilteredList属性绑定到具有所选属性的绑定作为依赖项。

也许你可以优化它,使用较少的对象等,但可能you aren't gonna need that.

private Predicate<MyItemType> createPredicate() {
    ...
}
filteredList.predicateProperty().bind(Bindings.createObjectBinding(this::createPredicate, checkBox1.selectedProperty(), checkBox2.selectedProperty(), ...));

顺便说一句:使用Predicate.or组合与每个所选Predicate相关联的CheckBox可能会有所帮助。