【问题标题】:Have user input into JTextField in for loop in Action Listener在 Action Listener 的 for 循环中让用户输入 JTextField
【发布时间】:2012-04-18 03:38:26
【问题描述】:

我是 Java 新手。我希望用户能够通过单击提交分别输入 4 个不同的输入。我正在使用 for 循环进行计数,但我不知道如何让用户多次输入他们的答案。 for 循环只是一次重复。我正在使用数组来保存用户的答案。这是我的代码的一部分。如果您有任何问题或需要更多解释,我会明确表示。解释更多

private void Question1()
{
    int count = 1;
            QuestionsPanel.add(new JLabel(Q1.getQuestion()));
    QuestionsPanel.add(new JLabel(Arrays.toString(mans1)));

    AnswerField = new JTextField(10);
    AnswerPanel.add(AnswerField);

    Submit = new JButton("Submit");
    AnswerPanel.add(Submit);
    Submit.addActionListener(this);

}

public void actionPerformed(ActionEvent e)
{
    if ((e.getSource() == Submit) && count == 0)

    {
        int value = Integer.parseInt(AnswerField.getText());

        for (int i = 0; i < 4; i++)
        {

            if (value == -1) break;
            ans[i] = value - 1;
            AnswerField.setText("");


        }

【问题讨论】:

  • 请您进一步解释一下,为什么需要一个循环,为什么一个普通的计数器,不能做这个任务?就在counter == 4 时,您可以禁用JTextField 以供进一步输入。

标签: java swing for-loop applet actionlistener


【解决方案1】:

这不起作用,因为您将循环放在ActionListener 中,单击按钮时会执行一次。

你应该做的是在某处保留当前答案的计数器

int count = 0;

public void actionPerformed(ActionEvent e) {
  if ((e.getSource() == Submit) && count < 4) {
    int value = Integer.parseInt(AnswerField.getText());

    if (value == -1) break;
    ans[count++] = value - 1;
    AnswerField.setText("")
  }
}

通过这种方式,循环由 actionlistener 隐式管理:每次按下提交时,计数都会增加 1,并且正确的答案会放在数组中。当然,您应该在提交第四个答案时执行一些操作,例如禁用提交按钮。

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多