问题是当单击按钮并进入开始游戏方法时,程序不会等待问题方法中包含的动作侦听器。相反,它会跳到最后一个方法。感谢。
//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;
}
});
}
答案 0 :(得分:4)
使用JOptionPane
。您可以在JOptionPane
中单独显示每个问题。该对话框仅在用户响应对话框时关闭。
阅读How to Make Dialogs上的Swing教程中有关工作示例的部分。
否则您需要重新设计表单。那就是你会显示一个问题。然后在第一个问题的ActionListener中,您将显示第二个问题,依此类推。在第二个问题的ActionListener中,显示第三个问题。
或者在ActionListener中,您需要调用“下一个问题”方法。因此,在这种情况下,您将使用ArrayList来保存每个问题。然后每次回答问题时,您将转到ArrayList中的下一个问题。这是更好的方法,因为您可以轻松更改要问的问题数量。你永远不应该用硬编码方法来提出不同的问题。
此外,变量名称不应以大写字符开头。有些变量名称是正确的,有些则不是。保持一致!