JFrame - Fenstergröße anpassen

starbuck86

Mitglied
Hallo Community.

Ich bin gerade dabei einen Server-Monitor in Java zu programmieren.
In diesem Programm gibt es ein Hauptfenster mit 24 Buttons. Mit dem Klick auf einen dieser Buttons wird ein neues Fenster geöffnet mit wiederum zwischen 3 und 14 Buttons die in einem GridLayout alle untereinander angeordnet sind. Dazu muss ich jetzt sagen, dass diese Fenster eine variable Größe haben. Also die Buttons werden dynamisch erzeugt.

Damit die Fenster nicht all zu viel Platz verschwenden möchte ich sie gerne "packen". Das ganze funktioniert ja mit der Methode > pack() < Allerdings werden die Fenster auch horizontal auf die kleinst mögliche Größe gepackt. Und das ist nicht das, was ich gerne hätte.

Weiss jemand wie man so etwas umsetzen kann?
Also:
- vertikal variable Größe der Fenster
- horizontal fixe Größe der Fenster

Danke && Gruß
Thomas
 
kann man die Methode pack nicht überschreiben ?

und vllt sowas hier bauen:
Java:
new JFrame(){
public void pack(){
int breite = getBreite(); //Was den genauen Methodennamen für Aktuellebreite nicht
super.pack();
setBreite(breite);
}
}

oder ich hab deine frage stellung falsch verstanden =)

mfg
 
Stimmt. Probiers gleich mal aus.
Ja er nimmt keine int-Werte in der Methode an.

Habe nur folgendes gefunden:
"public void setMinimumSize(Dimension minimumSize)"


@Leroux, Du hast sie voll und ganz richtig verstanden. Dann werd ich das auch mal testen.
 
Ja wie schon erwähnt, pack() aufrufen und anschließend das JFrame wieder auf die gewünschte Breite setzen.

Edit:
Java:
setMinimumSize(new Dimension(x,y));
 
Zuletzt bearbeitet:
Ja Matze, durch Deinen Post kam ich ja drauf. Aber das mit den 2 Integer-Werten als Übergabe hatte nicht funktioniert also hab ich die Methodendeklaration der API gepostet. :)

Ist ja echt klasse hier. Bekommt man schnell GUTE Antworten.

Danke mal an alle.
 
Ups, sorry, könnte schwören, dass das bei meinem alten treuen Java 1.3 geht ^^

Bitte wenn alles geklährte ist noch unten auf den "Erledigt"-Button drücken.
 
So nun nochmal als Abschluss.
Habe beide Möglichkeiten ausprobiert.

Variante a: Button-Größe
Java:
jbutton.setMinimumSize(new Dimension(50,50));
Hat dem Button zwar eine Größe zugeordnet, aber mit der Methode pack() wurde das dann überschrieben.

Variante b: pack() überschreiben
Java:
public window_sec01prod() throws IOException {
		
	String[] array = this.e_s01p();
		
	JButton[] buttons = new JButton[20];
		
	frame_01p.setSize(140,500);
	frame_01p.setLocation(100,100);
	frame_01p.setVisible(true);
	frame_01p.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
	frame_01p.addWindowListener(mywl2);
	frame_01p.add(panel);
	panel.setLayout(new GridLayout(0,1));
	
	for (int i=0; i<20; i++) {
		if (array[i] != null) {
			buttons[i] = new JButton(array[i]);
			panel.add(buttons[i]);
		}
	}
	this.pack();
	frame_01p.setResizable(false);
}

public void pack() {
	frame_01p.pack();
	int hoehe = frame_01p.getSize().height;
	frame_01p.setSize(140,hoehe);
}
Hiermit hats geklappt.

Gruß
Thomas
 
Zuletzt bearbeitet:
Zurück