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

标签 java swing loops

<分区>

我试图在按下 gui 上的按钮时让我的程序跳出 while 循环。

我有一个线程启动 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;
            }   
        }

然而,即使我单击应用并且 applyClicked 在 GUI 中变为真,它也不会执行该 if 语句。

但是,如果我在 while true 下方添加打印行,它就可以正常工作。

我还调试了它逐行运行并且变量设置正确并且它可以工作。

为什么当我没有 println 时这不起作用?跟线程有关系吗?

谢谢

最佳答案

你正在执行一个忙等待循环,我猜它会占用你所有的 cpu 能力。 您应该改为在您的应用按钮上添加一个 actionListener 并在 actionPerformed 方法中执行您的操作。

关于java - if 语句不在 while(true) 循环中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435939/

相关文章:

java - 如何在java中随机打开迷宫线

java - Firebase 数据不断循环

java - 返回 ArrayList 并打印其中的对象

c++ - 循环调用一次函数 C++

c - 使用循环理解数字反转

java - 如何在 spring 集成中获取发件人 IP 地址?

java - 安卓/Java : Simulate a click on this webpage

java - 如何在 jbutton 上设置悬停效果?

java - checkboxgroup 未出现在面板中

java - 按钮/JPanel 网格显示不正确