如何暂停程序中循环等待按下按钮 - 动作监听器

时间:2012-12-04 16:28:21

标签: java

  

可能重复:
  How can I wait for a button press in a loop?

我认为这个问题之前已被问过,但我没有找到解决我情况的回复。

我目前有一个象棋程序(命令行),允许用户输入持有他们想要移动的棋子的方块的坐标。一开始就是这样的。

boolean success;
do {
    success = true;

    // take in coordinates;

    // perform checks such as not empty square etc;

    if (/*problem found*/) {
        // print error message;
        success = false;
    }
}
while (!success);

在命令行中运行时效果很好,因为每次运行循环时,程序都会暂停执行以等待用户输入坐标。但是,现在我想使用按钮和动作侦听器通过GUI实现它。最方便的解决方案是不要将代码改为输入坐标部分,而输入坐标部分将替换为诸如

之类的东西。
pause program;
user presses button which sets coordinates;
when button pressed program continues;
perform checks…;

如何做到这一点? 在java中是否有一个方法说等待按下按钮? 这种方法必须确保程序的其他部分(例如绘制GUI)不会停止。

1 个答案:

答案 0 :(得分:0)

我猜你不需要“暂停”。单击按钮时需要调用函数。您可以将操作放入函数中,然后从Listener的实现中调用此函数。如您的示例所示按钮,您可以将ActionListener实现到Frame对象,然后actionPerformed()函数调用您的函数。

public class GUI extends JFrame implements ActionListener{
    //...
    Button b;
    public GUI(){
        //...
        b = new Button();
        this.getContentPane().add(b);
        this.addListener(b);
        //...
    }
    //...
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==b){
            // your TODO list here
        }
    }
}