复选框的开关盒的实现

时间:2014-11-19 12:54:22

标签: java switch-statement jcheckbox

有没有办法为复选框实现switch case?

示例:我有4个复选框,如果我选中了2个复选框,如何触发案例到我想要的输出?

 double exam = 0.0, assign = 0.0, quiz = 0.0, ct = 0.0;

                if (examchkbox.isSelected()) {
                exam = Double.parseDouble(examtextfield.getText());
                }
                if(ctchkbox.isSelected()) {
                ct = Double.parseDouble(cttextfield.getText());    
                }
                if(quizchkbox.isSelected()) {
                quiz = Double.parseDouble(quiztextfield.getText());    
                }
                if(asschkbox.isSelected()) {
                assign = Double.parseDouble(asstextfield.getText());    
                }
                if (!(exam + ct + quiz + assign == 100)) {
                markerrorlbl.setText("Total marks must be 100");
                }
                else {  

                // implementation of code here
                }

Design View 这是设计视图。

我想勾选考试班级考试,我只想在文本字段中选择值并使用switch case存储标记。这可能吗?

这是我想要的,但我不知道如何使用Checkbox实现。

switch(x) 
        {
            case 1 : A = new exam(marks)   ;total+=marks;  break;
            case 2 : A = new test(marks)   ;total+=marks; break;
            case 3 : A = new quiz(marks)   ;total+=marks; break;
            case 4 : A = new assignment(marks) ;total+=marks;break;     
        }

1 个答案:

答案 0 :(得分:0)

为什么要使用开关而不是代码中已有的if语句?

由于您可以相互独立地选择四个复选框,因此switch不是最佳解决方案。您有四个复选框,因此有2 ^ 4 = 16种可能的“检查模式”:

int pattern = (cb1.isSelected() ? 0b0001 : 0)
            | (cb2.isSelected() ? 0b0010 : 0)
            | (cb3.isSelected() ? 0b0100 : 0) 
            | (cb4.isSelected() ? 0b1000 : 0);

switch (pattern) {
    case 0b0001:
        // code for when only checkbox 1 is checked 
        break;
    ...
    case 0b0011:
        // code for when checkbox 1 and checkbox 2 are checked
        break;
    ...
    case 0b1011:
        // code for when only checkbox 1, 2 and 4 are checked
        break;
    ...
}

如果使用开关,则需要16个案例。相反,您只需要4个if语句:

if (checkbox 1 is checked) {
    // code for when checkbox 1 is checked
}
if (checkbox 2 is checked) {
    // code for when checkbox 2 is checked 
}
...    

请注意,这些是4个独立的if语句,没有else if