-1

可能重复:
如何循环等待按钮按下?

我认为这个问题之前已经被问过但是我还没有找到解决我的情况的答案。

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

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)不会停止。

4

1 回答 1

0

我想你不需要“暂停”。单击按钮时,您需要调用一个函数。您可以将要执行的操作放入函数中,然后从侦听器的实现中调用此函数。正如您的示例所说的按钮,您可以将 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
        }
    }
}
于 2012-12-04T16:52:52.933 回答