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