[英]Why does my else statement execute in a 'while-loop' but does not execute in a 'for-loop' in JAVA
[英]Why does my if statement in my while loop only execute in debugging?
因此,我正在制作井字游戏,并在IntelliJ中使用由JButtons制作的GUI。 这是我当前的代码,用于检测何时按下按钮并将其标记为X
或O
public static void taketurn(){
Boolean gamerunning = true;
while(gamerunning){
if(button1.getModel().isPressed()) {
button1.setText("X");
gamerunning = false;
}
}
}
我的问题是,在运行代码时,它可以很好地创建UI,但是单击按钮无效。 但是,当我进入调试阶段但在button1.setText("X")
处button1.setText("X")
,然后从那里前进时,它将正确执行代码,并且出现X
为什么这仅在带有中断的调试中起作用而不能在正常运行中起作用?
全速运行时,可能不会发生,而while循环再次开始之前,if没有执行。 您是否考虑过在按钮上使用actionListener? 创建按钮时尝试这样的操作
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//logic here to add X or O
}
}});
然后,您不必担心要通过循环来等待用户选择。 只要他们按下按钮,您的逻辑就会处理X或O的添加
我认为在这里使用ActionListener类是一个好主意。 您可以制作自己的ActionListener实现,而不必使用匿名类,如下所示:
class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//The stuff you want to do when the button is pressed
}
}
然后,可以在需要时创建此类的新实例,并使用addActionListener(ActionListener l)函数将其添加到JButton中。
MyJButton.addActionListener(new MyActionListener());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.