首页 文章

关于Checkbox更改的Javafx更新tableview

提问于
浏览
0

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

我如何实现特定的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 回答

  • 1

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

  • 1

    您只需将 FilteredListpredicate 属性绑定到具有所选属性作为依赖项的绑定即可 .

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

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

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

相关问题