我正在使用 javax.swing 包构建一个 gui,并有一个 while 循环永远运行,里面有一个 if 语句,以查看是否按下了按钮。由于某种我不知道的原因,只有当我在 while 循环内打印到控制台时,此代码才有效。
算法结构如下:
while(true){
System.out.println(" ");
if (startOver && playPressed) {//set to true on JButton press
//do stuff
}
}
这可能是某种线程问题?以前有人遇到过这样的问题吗?是否有一种等待 JButton 被按下的方法,而不涉及无限 while 循环?
提前致谢!
最佳答案
Swing 是基于事件的。您不应该有无限循环等待按下按钮。该循环由 Swing 内部实现。您应该做的是向事件添加一个操作监听器,单击按钮时将调用该操作监听器:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("The button has been clicked!");
// do stuff
}
}
这是处理 Swing 时的基本内容。您应该阅读swing tutorial .
swing 事件调度线程中的任何无限循环都将永远卡住 GUI。
关于java - if 语句仅在我之前打印到终端时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15886619/