Hinzufügen von Bildern zu den Zellen in einem GridLayout

Versuchen, um ein gridLayout-Objekt und füllen es mit Bildern, wo ist es schief gehen kann?

ImageIcon grassIcon = new ImageIcon("images/grass_tile.jpg"); 
JPanel panel = new JPanel(new GridLayout(haps,snaps,0,0));

JLabel labels[] = new JLabel[(haps*snaps)];

for (int i =  0; i < haps*snaps; i++)
{
    labels[i] = new JLabel(grassIcon);
    panel.add(labels[i]);
}

frame.add(panel);
was sehen Sie ? Fehler ? nennt man frame.pack()?
frame.pack() hat den job! Aber wie und warum ? In der Dokumentation!!! danke.
Warum es passiert ist, In Swing beim erstellen der Komponente, ist es nicht gültig, d.h. es gilt-Eigenschaft ist false. Eine Komponente wird als gültig bezeichnet, wenn es die Breite, die Höhe, den Standort und die Sachen wurden bestimmt. Dies geschieht in der Regel durch den Aufruf Ihrer Methode validate (), die direkt oder indirekt. Wenn wir rufen validate() auf den Container, es überprüft den container (wenn er ungültig ist), durch den Aufruf dessen doLayout () - Methode, die in der Regel ruft der LayoutManager.
Fortsetzung... : Nun jedes Kind auf diesem container werden überprüft rekursiv, so dass der ganze Baum angelegt und wird gültig. Hier aufrufen pack() ist indirekt die änderung der invalid state der Komponenten zu einem valid state. Mehr Infos finden Sie auf dieser thread

InformationsquelleAutor Jesper Tuborg Madsen | 2013-01-28

Schreibe einen Kommentar