在检查或取消某些项目时如何检查和取消检查所有项目

在检查或取消某些项目时如何检查和取消检查所有项目

本文介绍了在检查或取消某些项目时如何检查和取消检查所有项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

JavaFX CheckComboBox选中或取消选中某些项目时如何检查和取消选中所有项目.

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

选中所有项目时全部选中

取消选中所有项目时取消选中所有

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();
             }
         });

推荐答案

向侦听器添加boolean字段以防止递归:

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;
        }
    }
});

这篇关于在检查或取消某些项目时如何检查和取消检查所有项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-03 19:32