Layout automatische Anpassung umgehen?

Lybrial

Bekanntes Mitglied
Hallo,

ich habe für ein JPanel ein GridLayout(7, 7) festgelegt, das heißt 49 Felder.
Je nachdem wie viele dieser Felder ich nun mit Inhalt fülle, also wie viel Elemente ich habe,
passt er das Layout automatisch an.

Wenn das Panel z.B. 36 Buttons bekommt, macht er automatisch aus dem 7 x 7 ein 6 x 6
Layout.

Wie kann ich diese automatische Anpassung umgehen?
 
Wie soll das Layout in so einem Fall bzw. grundsätzlich gefüllt werden? Eventuell immer alle Zeilen füllen?
Java:
GridLayout(0, 7);
 
Ich glaub, dann stimmt evtll.was mit deinem Code nicht. Es müssten zumindest 7 Spalten mit Elementen gefüllt werden. Die Zeilen sollten bei dir dann so lange gefüllt werden, bis die Anzahl der Elemente erschöpft ist.
In der FAQ findest du auch einen Beitrag zum GridLayout.

Edit: I
 
Wenn ich wie Michael.. es gepostet habe das GridLayout mit 0 x 7 initialisiere werden
die Felder immer genau so aufgefüllt wie ich es haben möchte, es ist nämlich nur wichtig,
das die Anzahl der Spalten konstant bleibt, nämlich 7, die Anzahl der Zeilen darf variabel sein.

@L-ectron-X
Ich kenne es eigentlich garnicht anders, das hat GridLayout bisher schon immer in meinen
Swing Programmen gemacht, dass er je nach Anzahl der Elemente in diesem Layout, dieses
automatisch angepasst hat. Jedoch konnte ich das bisher immer ganz einfach umgehen.
Nur diesmal hab ich es nicht so schnell herausgefunden wie Michael z.B. 😉
Aber grundsätzlich wäre es trotzdem toll zu erfahren, ob es eine Möglichkeit gibt wie man
die automatische Anpassung komplett ausschaltet.
 
Aber grundsätzlich wäre es trotzdem toll zu erfahren, ob es eine
Möglichkeit gibt wie man die automatische Anpassung komplett ausschaltet.
Quellcode GridLayout hat gesagt.:
* When both the number of rows and the number of columns have
* been set to non-zero values, either by a constructor or
* by the <tt>setRows</tt> and <tt>setColumns</tt> methods, the number of
* columns specified is ignored. Instead, the number of
* columns is determined from the specified number or rows
* and the total number of components in the layout.
Der Algorithmus ist im GridLayout fest implementiert.
Quellcode GridLayout hat gesagt.:
Java:
	int nrows = rows;
	int ncols = cols;
	...
	if (nrows > 0) {
	    ncols = (ncomponents + nrows - 1) / nrows;
	} else {
	    nrows = (ncomponents + ncols - 1) / ncols;
	}
Code:
rows
und
Code:
cols
enthalten die "gewünschten" Zeilen- und Spaltenanzahl.
Code:
ncols
die verwendete Spaltenanzahl, die im Falle rows>0 neu berechnet wird.
 

Zurück
Oben