繁体   English   中英

为什么while循环中的if语句仅在调试中执行?

[英]Why does my if statement in my while loop only execute in debugging?

因此,我正在制作井字游戏,并在IntelliJ中使用由JButtons制作的GUI。 这是我当前的代码,用于检测何时按下按钮并将其标记为XO

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM