if语句不在while(true)循环中执行

时间:2012-02-24 18:19:00

标签: java swing loops

当我按下gui上的一个按钮时,我试图让我的程序突然停止。

我有一个启动GUI线程的线程,等待直到按下一个应用按钮。 这是代码:

public void run() {     

        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGui();
            }           
        });

        // Wait until apply button clicked and set team
        while(true) {

            applyClicked = gui.getApplyClicked();
            if (applyClicked == true) {
                teamYellow = gui.getTeam();
                break;
            }   
        }

然而,即使我单击apply并且GUI中的applyClicked变为true,它也不会执行if语句。

但是,如果我在while下方添加一条打印行,则可以正常工作。

我还调试了它逐行运行并且变量设置正确且有效。

当我没有println时,为什么这不起作用?它与线程有关吗?

由于

2 个答案:

答案 0 :(得分:5)

你正在执行一个忙等待循环,我想这将占用你所有的CPU功率。 你应该在你的应用按钮上添加一个actionListener,并在actionPerformed方法中做你的东西。

答案 1 :(得分:0)

这可能不是您正在寻找的答案,但为了以防万一,在循环外定义applyClicked并将循环声明为while(!applyClicked),以便不需要中断,因为如果{ {1}}为真,循环将自行退出。如果仍然无效,请使用调试器运行新代码。这可能会也可能不会奏效,这只是一个建议。