当我按下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时,为什么这不起作用?它与线程有关吗?
由于
答案 0 :(得分:5)
你正在执行一个忙等待循环,我想这将占用你所有的CPU功率。 你应该在你的应用按钮上添加一个actionListener,并在actionPerformed方法中做你的东西。
答案 1 :(得分:0)
这可能不是您正在寻找的答案,但为了以防万一,在循环外定义applyClicked
并将循环声明为while(!applyClicked)
,以便不需要中断,因为如果{ {1}}为真,循环将自行退出。如果仍然无效,请使用调试器运行新代码。这可能会也可能不会奏效,这只是一个建议。