2016-06-13 9 views
0

Ich habe eine ArrayList Array von JtextField, aber ich weiß nicht, wie es auf meinem JPanel setzen.Setzen einer ArrayList eines Array von JTextFields auf JPanel

ArrayList <JTextField []> text_field; 
text_field = new ArrayList <JTextField []>(); 

for (int i = 0; i < text_field.size(); i++) { 
    for (int j = 0; j < 8; j++) { 

    } 
} 

Wie kann ich meine doppelte for-Schleife ändern, um mein JTextField auf das JPanel zu setzen?

Ich habe den Code, der in der Antwort angegeben wurde, in meinen Konstruktor eingefügt und es kompiliert ohne Fehler. Wenn ich das Programm ausführe, wird das TextField, das hinzugefügt wurde, jedoch nicht auf der GUI angezeigt. Warum passiert das?

ArrayList <JTextField []> text_field; //class variable 

constructor { 
    text_field = new ArrayList <JTextField []>(); 

    for (int i = 0; i < text_field.size(); i++) { 
    JTextField field [] = text_field.get (i); 

    for (int j = 0; j < field.length; j++) { 
     JTextField jtf = field [j]; 
     pan2.add (jtf); 
    } 
    } 
} 

Antwort

0

Hier ist, wie Sie dies tun können:

ArrayList <JTextField []> text_field; 
text_field = new ArrayList <JTextField []>(); 

for (int i = 0; i < text_field.size(); i++) 
{ 
    JTextField [] arr = text_field.get(i); 
    for (int j = 0; j < arr.length; j++) 
    { 
     JTextField jtf = arr[j]; 
     // add the JTextField to the JPanel here 
     // JPanel.add(jtf) 
    } 
} 

Sie können auch für jede Schleifen wie folgt verwenden:

for (JTextField [] arr : text_field) 
{ 
    for (JTextField jtf : arr) 
    { 
     // add the JTextField to the JPanel here 
     // JPanel.add(jtf) 
    } 
} 
0

Hmm ... ohne zu wissen, was 0-8 soll Um in Ihrer verschachtelten for-Schleife darzustellen, gehe ich davon aus, dass Sie tatsächlich versuchen, das JTextField [] -Array zu durchlaufen. Also hier ist der Code:

Bitte beachten Sie die Änderungen im Code (dh best practice Sachen wie 1. Verwenden Sie Camelcase statt Unterstrichen 2. Sie brauchen nicht zwei getrennte Leitungen in Ihrem Textfield Objektinstanziierung 3. Sie können nur den Typ als Liste in auf der linken Zuordnung des Objekts deklarieren 4. Sie den Diamanten Operator <> auf der rechten Seite (seit Java 7)

List<JTextField[]> textField = new ArrayList<>(); 
for (int i = 0; i < textField.size(); i++) { 
    JTextField[] jtfArray = textField.get(i); 
    for (int j = 0; j < jtfArray.length; j++) { 
     add(jtfArray[i]);//add to the JPanel 
    } 
} 
verwenden können