How to check and uncheck all items when checking o

2019-07-19 13:31发布

JavaFX CheckComboBox How to check and uncheck all items when checking or unckeck some of the items.

Check all when ckeck item All

Uncheck all when unckeck item All

ObservableList<String> list = FXCollections.observableArrayList("All","Item 1", "Item 2", "Item 3", "Item 4");

checkBoxCombo.getItems().addAll(list);  

checkBoxCombo.getCheckModel().getCheckedItems().addListener(new ListChangeListener<String>() {      

public void onChanged(ListChangeListener.Change<? extends String> c) {

            if(checkBoxCombo.getCheckModel().isChecked(0))                  
                    checkBoxCombo.getCheckModel().checkAll();                
             }
         });

1条回答
趁早两清
2楼-- · 2019-07-19 14:09

Add a boolean field to the listener to prevent recursion:

checkBoxCombo.getCheckModel().getCheckedItems().addListener(new ListChangeListener<String>() {

    private boolean changing = false;

    @Override
    public void onChanged(ListChangeListener.Change<? extends String> c) {
        if (!changing && checkBoxCombo.getCheckModel().isChecked(0)) {
            // trigger no more calls to checkAll when the selected items are modified by checkAll
            changing = true;
            checkBoxCombo.getCheckModel().checkAll();
            changing = false;
        }
    }
});
查看更多
登录 后发表回答