
[英]How to stop Button ActionListener midway and wait for the user to click it again?
[英]Is there a way I can stop the program and wait for the user to click a button
问题在于,当单击按钮并进入开始游戏方法时,程序不会等待问题方法中包含的动作侦听器。 而是跳到最后一个方法。 谢谢。
//Setting Main Layout
Game.setLayout(new BorderLayout());
Game.add(NorthName, NORTH);
Game.add(SouthScore, SOUTH);
Game.add(Center, CENTER);
//Setting NorthName Layout
NorthName.setLayout(new GridLayout(0,2,2,0));
NorthName.add(name);
NorthName.add(getName);
//Setting SouthScore Layout
SouthScore.setLayout(new FlowLayout());
SouthScore.add(scoreL);
scoreL.setText("Score: " + String.valueOf(scoreN) + "/10");
//Setting Center
Center.setLayout(new GridLayout(4,3,0,0));
Center.add(intro);
Center.add(question);
Center.add(True);
Center.add(False);
Center.add(status);
Center.add(answer);
True.setText("Start");
False.setText("Exit");
intro.setText("");
question.setText("");
status.setText("");
answer.setText("");
True.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
intro.setText("Hello " + getName.getText());
True.setText("True");
False.setText("False");
status.setText("");
answer.setText("");
startGame();
}
});
False.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
intro.setText("Hello guest");
True.setText("True");
False.setText("False");
status.setText("Well... ");
answer.setText("That's too bad. ;)");
startGame();
}
});
}
开始游戏方法
void startGame(){
scoreN = 0;
setQuestionOne();
setQuestionTwo();
setQuestionThree();
setQuestionFour();
setQuestionFive();
setFinalScore();
}
这就是设定问题方法在每个过程中都是相同的。
void setQuestionOne(){
question.setText("i'Robot is about Robots.");
True.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
status.setText("Correct! +3");
answer.setText("This Movie is about robots!");
scoreN = scoreN + 3;
scoreL.setText("Score: " + String.valueOf(scoreN) + "/10");
}
});
False.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
status.setText("Incorrect! +0");
answer.setText("This Movie is about robots!");
scoreN = scoreN + 0;
}
});
}
使用JOptionPane
。 您可以在JOptionPane
分别显示每个问题。 仅当用户响应对话框时,对话框才会关闭。
阅读Swing教程中有关如何制作对话框的部分, 以获取工作示例。
否则,您需要重新设计表单。 那就是您将显示一个问题。 然后在第一个问题的ActionListener中,将显示第二个问题,依此类推。 在第二个问题的ActionListener中,显示第三个问题。
或者在您的ActionListener中,您将需要调用“下一个问题”方法。 因此,在这种情况下,您将使用ArrayList来保存每个问题。 然后,每次回答问题时,您就移至ArrayList中的下一个问题。 这是更好的方法,因为您可以轻松更改要提出的问题数量。 您绝对不应使用硬编码方法来提出其他问题。
另外,变量名不应以大写字母开头。 你们中的一些变量名是正确的,其他的则不是。 始终如一!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.