Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查看是否未选中所有复选框的快速方法_Java_Swing_Checkbox_Jpanel - Fatal编程技术网

Java 查看是否未选中所有复选框的快速方法

Java 查看是否未选中所有复选框的快速方法,java,swing,checkbox,jpanel,Java,Swing,Checkbox,Jpanel,我有一个带有16个jcheckbox的javajpanel,我希望确保用户在提交表单之前至少选择一个jcheckbox。我知道的唯一方法是使用一个庞大的if语句来查看“isSelected()”方法的布尔值,但这似乎效率低下。 所以我想知道是否有一种更快的方法来检查是否所有的框都未选中 您不需要if语句。您可以使用| |使用大型逻辑表达式执行此操作: boolean somethingChecked = box1.isSelected() || box2.isSelected()

我有一个带有16个jcheckbox的javajpanel,我希望确保用户在提交表单之前至少选择一个jcheckbox。我知道的唯一方法是使用一个庞大的if语句来查看“isSelected()”方法的布尔值,但这似乎效率低下。
所以我想知道是否有一种更快的方法来检查是否所有的框都未选中

您不需要
if
语句。您可以使用
| |
使用大型逻辑表达式执行此操作:

boolean somethingChecked = box1.isSelected()
    || box2.isSelected()
    || ...;
或者,如果框在一个数组中(首选),则循环:

或者,您可以使用附加到每个
JCheckBox
的复选框来跟踪复选框的计数:

int selectionCount;
ItemListener boxListener = new ItemListener() {
    @Override public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            selectionCount++;
        } else {
            selectionCount--;
        }
    }
};

(请注意,如果这是
itemstener
正在执行的全部操作,则可以将单个实例附加到所有框。)
selectionCount
应初始化为最初选中的框数。然后在代码中的适当点,您可以简单地测试
selectionCount
是否大于零。

您不需要
if
语句。您可以使用
| |
使用大型逻辑表达式执行此操作:

boolean somethingChecked = box1.isSelected()
    || box2.isSelected()
    || ...;
或者,如果框在一个数组中(首选),则循环:

或者,您可以使用附加到每个
JCheckBox
的复选框来跟踪复选框的计数:

int selectionCount;
ItemListener boxListener = new ItemListener() {
    @Override public void itemStateChanged(ItemEvent e) {
        if (e.getStateChange() == ItemEvent.SELECTED) {
            selectionCount++;
        } else {
            selectionCount--;
        }
    }
};

(请注意,如果这是
itemstener
正在执行的全部操作,则可以将单个实例附加到所有框。)
selectionCount
应初始化为最初选中的框数。然后在代码中的适当点,您可以简单地测试
selectionCount
是否大于零。

我相信这将实现以下目的:

 public boolean validatePanel(JPanel panel) {   
    for (Component component : panel.getComponents()) {
        if(component instanceof JCheckBox){
            JCheckBox c = (JCheckBox) component;
            if(c.isSelected()){
            return true;
            }
        }
    }
    return false;
}

该方法接收一个JPanel并获取其上的所有组件。然后选中所有复选框,如果是复选框,则将组件强制转换为复选框,以访问
isSelected
方法。如果选中任何复选框,它将返回true;如果它完成foreach的
而不返回任何true,则意味着没有选中任何复选框。

这将实现我相信的技巧:

 public boolean validatePanel(JPanel panel) {   
    for (Component component : panel.getComponents()) {
        if(component instanceof JCheckBox){
            JCheckBox c = (JCheckBox) component;
            if(c.isSelected()){
            return true;
            }
        }
    }
    return false;
}

该方法接收一个JPanel并获取其上的所有组件。然后选中所有复选框,如果是复选框,则将组件强制转换为复选框,以访问
isSelected
方法。如果选中任何复选框,它将返回true;如果它完成
foreach
而不返回任何true,则表示没有选中任何复选框。

对,我有一个侦听器。我想知道是否有一种更快的方法可以使用侦听器检查布尔值。我不想检查每个按钮。对,我有一个监听器。我想知道是否有一种更快的方法可以使用侦听器检查布尔值。我不想检查每个按钮。