如何将我的Overridden ActionListener方法中的信息发送到Java中的main方法?

时间:2013-04-23 19:59:04

标签: java swing actionlistener override

基本上,我是一个新手,创建一个提供问题的程序,随机化正确答案的索引,然后在JFrame中显示问题。 我可以轻松执行我添加到此ActionListener方法的任何任务:

@Override
    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("1")) {
            System.out.println("whatever");
            JOptionPane.showMessageDialog(null, "correct!", 
                "", JOptionPane.PLAIN_MESSAGE);
        } else {
        JOptionPane.showMessageDialog(null, "wrong!", 
                "", JOptionPane.PLAIN_MESSAGE);
    }
}

程序从main方法中给出的setActionCommand获取“1”,但是我希望Listener返回main方法,当点击正确的单选按钮时,也会显示下一个问题。 主要方法如下:

while (therearestillquestionsleft) { /* do everything */ }

所以我需要程序在循环中等待,直到单击正确的答案。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

正如其他人所指出的那样,在循环中等待并不是处理Java中等待GUI用户输入的方法。

您可以改为将程序重新设计为如下所示:

public static void main(String args[]) {
    // [...]
    nextQuestion();
}

public static void nextQuestion() {
    if (questionsLeft) {
        // "do everything", i.e. show next question
    }
}

然后,您只需在nextQuestion()内拨打ActionListener