我有大量数据,我在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语句?
答案 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
可能会有所帮助。