Seitenverhältnis beibehalten - LayoutManager

Pasukaru

Grünschnabel
Howdy,

Hab mal wieder ne Frage zu Layout-Managern. Und zwar: wie kann ich einstellen, dass bei der Vergrößerung/Verkleinerung des Panels/Frames/WasAuchImmer, die Components das Seitenverhältnis beibehalten?

Hab mehrere quadratische Buttons - und ich will verhindern, dass diese rechteckig werden.
Hat jemand ne Ahnung wie ich das anstellen kann?

Danke schonmal für eure Antworten!

MfG - Pasukaru
 
z.B. bei FlowLayout oder GridBagLayout (mit default GridBagConstraints.NONE) wird die Komponentgröße beibehalten.

Gruß Attila
 
Danke für die Antwort - aber das ist nicht mein eigentliches Ziel.

Die Komponenten sollen schon vergrößert werden - jedoch soll das Seitenverhältnis gleich bleiben. Also wenn ich das Fenster vergrößere, wird aus einem quadratischen-Button u.U. ein rechteckiger - das will ich irgendwie vermeiden.

Im Prinzip muss nach dem anpassen der Größe nur die längere Seite an die kürzere angepasst werden - Hab nur leider keine Ahnung, wie ich das bewerkstelligen kann.

Ich hab auch schon mit einem componentListener versucht die bounds und die preferredSize zu verändern - allerdings ohne Erfolg.

- EDIT -
Habs hinbekommen! :)
Ich hab das Layout auf null gesetzt, und die Größenänderung der Buttons über einen componentListener ausgeführt.
Wen es interessiert - hier ein Code-Ausschnitt:

Java:
JPanel panel = new Panel();
panel.setLayout(null);		
if( panel.getComponentListeners().length<1 ){	// Um das hinzufügen mehrerer Listener auf jeden Fall zu vermeiden
	panel.addComponentListener(new ComponentListener() {
		public void componentShown(ComponentEvent arg0) {}
		public void componentResized(ComponentEvent arg0) {
					
			int w = 1234; // breite berechnen...
			int h = 4321; // länge berechnen...
			int min = Math.min(w, h);	//Kürzere Seite festellen - 
										//da es sich bei mir um Quadrate handelt
										//brauche ich kein genaues Seitenverhältnis
			button.setBounds(x, y, min, min);
					
		}
		public void componentMoved(ComponentEvent arg0) {}
		public void componentHidden(ComponentEvent arg0) {}
	});
}

-- Zählt das nun schon als Custom-LayoutManager? Wenn ja, bin ich stolz auf meine erbrachte Leistung. :D
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück