突破for循环

时间:2016-07-26 15:02:18

标签: java

我尝试运行以下代码,但是当选中单选按钮trueButton或falseButton时,它不会突破for循环。

for(;;){            
    if (trueButton.isSelected() || falseButton.isSelected()){
        System.out.print("Selected");
        break;
    }
}

但是,如果我添加System.out.println("");在if语句之前,当能够选择trueButton或falseButton时,我能够跳出for循环。

for(;;){
    System.out.println("");
    if (trueButton.isSelected() || falseButton.isSelected()){
        System.out.print("Selected");
        break;
    }
}

我是否可以在if语句之前添加System.out.println("")而突破循环?

如果有人能解释为什么第一个代码也不起作用,那就太好了。

由于我是编程新手,如果我对任何事情一无所知,请原谅我。

编辑:我在下面创建了一个类似的场景供大家测试。

public static void main(String[] args){
    JFrame window = new JFrame("Hello");
    JRadioButton trueButton = new JRadioButton("True ");
    JRadioButton falseButton = new JRadioButton("False ");      

    window.setSize(400, 325);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    window.setLayout(new FlowLayout());
    window.add(trueButton);
    window.add(falseButton);

    trueButton.setVisible(true);
    falseButton.setVisible(true);
    window.setVisible(true);

    for(;;){
        if (trueButton.isSelected() || falseButton.isSelected()){
            System.out.println("Selected");
            break;
        }
    }
    System.out.println("Done");
}

如果我们设法摆脱循环,"完成"应该打印出来。

2 个答案:

答案 0 :(得分:3)

编写GUI时,应该不惜一切代价阻止循环,因为它会导致您的应用无响应。

你应该将ActionListener添加到"反应"单击按钮时。否则,您只需使用isSelected方法检查单击了哪个按钮而没有循环;例如,提交表单或执行某些计算时。

如果您绝对需要不断阅读按钮的状态,请使用Thread

答案 1 :(得分:1)

试试这个:

  for(;;){            
            if (trueButton.isSelected() || falseButton.isSelected()){
            System.out.print("Selected");
            return;
        }
    }

或者这个:

outerloop:
  for(;;){            
            if (trueButton.isSelected() || falseButton.isSelected()){
            System.out.print("Selected");
            break outerloop;
        }
    }

否则看起来一切都正确... 希望这有帮助