我认为这个问题之前已被问过,但我没有找到解决我情况的回复。
我目前有一个象棋程序(命令行),允许用户输入持有他们想要移动的棋子的方块的坐标。一开始就是这样的。
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)不会停止。
答案 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
}
}
}