0

我为随机过程(例如 2+2 、 14/2 等)创建了一个程序。

我尝试创建一个 GUI。我有 5 个按钮(添加用于添加,Div 用于划分等)当用户单击添加按钮时,我向 JTextArea 发送一条消息以添加一条消息:

2 + 4 =

(或其他随机数)

我有一个用户可以写答案的 JTextField。因此,如果他写 6 一条成功消息出现在 JText 区域(如果他输入错误答案但失败消息相同)和其他 2 个随机数,所以:

2+4 = 6

是的!

3+4 =

并继续直到 c.isOverLimit() 方法返回 true(经过 10 个进程)。

int x = 10;

do {
    String string = String.format("%d %s %d =", p.getNumber1(),
                                  p.getOperator(), p.getNumber2());
    writeMessage(string);
    textField.addActionListener(
    new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                p.checkAnswer(Double.parseDouble(e.getActionCommand()));
                writeMessage(p.getMessage(Double.parseDouble(
                                              e.getActionCommand())));
                textField.setText("");
            }
            catch(Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
    }
    );
    c = Proccess.getCounter();
    x--;
}
while (x != 0);

我的问题是,当我按下添加按钮时,我有这个输出:

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

4+3=

错误是 do...while 运行了 10 次,并且不会因为用户的答案而停止。不要注意我使用的方法。我的程序在控制台程序中正确运行,所以我的错在此时...做

对不起我的英语不好。谢谢!

4

1 回答 1

0

计算调用次数应该在actionPerformed方法中完成。删除do...while循环并改用它:

int x = 10;
textField.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        if (x >= 0) {
            try {
                p.checkAnswer(Double.parseDouble(e.getActionCommand()));
                writeMessage(p.getMessage(Double.parseDouble(e.getActionCommand())));
                textField.setText("");
            } catch(Exception ex){
                System.out.println(ex.getMessage());
            }
            x--;
        } else {
            // quit, or whatever you want to do
        }
    }
});
于 2013-03-25T16:00:39.413 回答