2012-04-18 2 views
1

저는 Java를 처음 접했습니다. 사용자가 제출을 클릭하여 4 개의 입력을 개별적으로 입력 할 수있게하려고합니다. 나는 for 루프를 사용하고 있지만 사용자가 여러 번 답변을 입력하는 방법을 모르겠습니다. for 루프는 모든 것을 한 번에 반복합니다. 배열을 사용하여 사용자의 답변을 보유하고 있습니다. 여기 내 코드의 일부입니다. 질문이 있거나 더 많은 설명이 필요한 경우 나는 기각 할 것입니다.Action Listener에서 for 루프의 JTextField에 사용자 입력을했습니다.

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(""); 


     } 
+0

루프가 필요한 이유, 일반 카운터가이 작업을 수행 할 수없는 이유에 대해 좀 더 자세히 설명해주십시오. 그냥'counter == 4' 일 때, 추가 입력을 위해'JTextField'를 비활성화 할 수 있습니다. –

답변

2

당신은 버튼 클릭 한 번 실행되는 ActionListener에서 루프를 배치하기 때문에 작동하지 않습니다 더 설명합니다. 당신이 무엇을해야

는 현재의 대답 루프가 암시 된 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 및 정답에 의해 증가 배열 안에 배치됩니다. 물론 네 번째 답변을 제출할 때 제출 버튼을 사용 중지하는 것과 같은 작업을해야합니다.

+1

+1, 나는이 대답으로 갈 것이다 -) –

+0

동의, 또한 이것을 참조하십시오 [접근] (http://stackoverflow.com/a/8703807/230513). – trashgod