繁体   English   中英

有没有一种方法可以停止程序并等待用户单击按钮

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM