Введите пользовательский ввод в JTextField в цикле for в прослушивателе действий

Я прилично новичок в 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("");


        }

person Mike    schedule 18.04.2012    source источник
comment
Не могли бы вы объяснить немного подробнее, почему требуется цикл, почему обычный счетчик не может выполнить эту задачу? Просто когда это counter == 4, вы можете отключить свой JTextField для дальнейшего ввода.   -  person nIcE cOw    schedule 18.04.2012


Ответы (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("")
  }
}

Таким образом, цикл неявно управляется прослушивателем действий: каждый раз, когда вы нажимаете кнопку отправки, счетчик увеличивается на 1, а правильный ответ помещается внутрь массива. Конечно, вы должны что-то сделать, например, отключить кнопку отправки после отправки четвертого ответа.

person Jack    schedule 18.04.2012