2012-12-06 2 views
0

죄송합니다. 내 문제에 대한 설명이 조금 어색한 경우.jtextfields에서 데이터를 JButton 클릭하여 arraylist에 넣으십시오. (ActionListener)

음, 나는 X 양의 JTextFields를 추가하고 각각의 내용 (int)을 arrayList에 추가하려고합니다. 제출 버튼을 클릭하면 arraylist에게이 정보를 보내려고합니다.

그래서 여기에 JTextFields를 생성하고 필드의 데이터를 arraylist에 추가하는 루프가 있습니다.

If I enter antalVare = new JTextField("0"), 
the 0 will be added to the arraylist, 

하지만 JButton을 클릭하면 JTextFields의 데이터로 arraylist를 다시 채워야합니다. 내가 어떻게 할 수 있니? 스레드를 사용하여 여러 가지 방법을 시도했지만 실패했습니다.

kundeOrdreArrayList = new ArrayList<String>(); 

    alleVarerList = kaldSQL.alleVarer(connectDB); 

    try { 
     while (alleVarerList.next()) { 
      antalVare = new JTextField(); 

      innerPanel.add(new JLabel(alleVarerList.getString(2) + " (" 
        + alleVarerList.getString(3) + ",- kr.)")); 
      innerPanel.add(antalVare); 
      innerPanel.add(new JLabel("")); 
      kundeOrdreArrayList.add(antalVare.getText()); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 

    innerPanel.add(new JLabel("")); 
    innerPanel.add(submit); 
    innerPanel.add(new JLabel("")); 

그리고 여기 내의 ActionListener의 : 코드의 첫 번째 조각에서

if (a.getSource().equals(submit)) { 
     // DO SOMETHING ? 


      } 
+0

두 코드 조각이 어떻게 관련되는지는 분명하지 않습니다. 두 번째 코드는 JButton을 클릭하면 실행되는 코드입니다. 두 번째 코드 블록은 언제 실행되며 언제 실행됩니까? 귀하의 질문에 나는 당신이 당신의 ActionListener 에서이 코드 조각을 호출해야 할 것 같아요. 좀 더 명확하게, 어떻게 코드 블록이 관련되어 있습니다. –

+0

첫 번째 코드 스 니펫은 클래스가 실행될 때 실행됩니다. 그리고 네 번째 코드 스 니펫은 '제출'버튼을 클릭 할 때 실행됩니다. 나는 그것의 아무도 작동하고있는 ActionListener 고객을 지우. – Langkiller

+0

질문에 잘못된 코드가 반드시 나쁜 것은 아닙니다. 그것은 사람들이 시도한 것을 보여주고 문제를 식별하는 데 도움이 될 수 있습니다. 내 대답을 쓸 때 실제로 이전 버전을 찾아보고 "클래스가 실행될 때"계산 한 값을 출력하고있는 것을 보았습니다. –

답변

0

, 당신이 kundeOrdreArrayList에 추가 값은 텍스트 필드의 값이 시간에 을 가지고 있습니다. 나중에 텍스트 필드가 변경되면이 값은 업데이트되지 않습니다.

그래서 ActionListener에서 모든 JTextField에 대해 반복 작업을 수행해야합니다. 이렇게하려면 먼저 코드의 첫 번째 코드를 변경하여 보유하고있는 모든 JTextField를 추적하십시오. 그래서, 이 클래스에 "ArrayList를 텍스트 필드"새 필드를 추가하고 (당신의 ActionListener에 지금 // ++

textfields = new ArrayList<JTextField>(); // ++ 

try { 
    while (alleVarerList.next()) { 
     antalVare = new JTextField(); 
     textfields.add(antalVare); // ++ 

     innerPanel.add(new JLabel(alleVarerList.getString(2) + " (" 
       + alleVarerList.getString(3) + ",- kr.)")); 
     innerPanel.add(antalVare); 
     innerPanel.add(new JLabel("")); 
     kundeOrdreArrayList.add(antalVare.getText()); 
    } 

와 변경된 행을 표시 명확 kundeOrdreArrayList 다시 모든 JTextFields에서 값을 추가

if (a.getSource().equals(submit)) { 
     kundeOrdreArrayList.clear(); 
     for (JTextField field : textfields) { 
      kundeOrdreArrayList.add(field.getText()); 
     } 
    }