JFrame Fenstergrösse: Resizable vs. nicht Resizable

AcE(swiss)

Mitglied
Moin Jungs,

Ausgangslage: Ein JFrame beinhaltet mehrere Ansichten, welche durch JPanels realsiert wurden. Diese werden mit Hilfe des CardLayouts gewechselt.

Abhängig welches JPanel gerade sichtbar ist, kann das Fenster vergrössert werden oder eben nicht

Problem: Wird von einem JPanel, das nicht resizable ist auf ein resizable-fähiges gewechselt, so ändert sich die Grösse vom JFrame. Kann die Grösse des Fensters verändert werden, so ist das Fenster ein klein wenig kleiner, als wenn die Dimension fix ist.

So wird der Fensterinhalt gewechselt:

Java:
 if (event.getSource() == consoleButton) {
	
	cl.show(mainUserInterface, PanelList.CONSOLE.toString());
	mainUserInterface.getMainWindow().setResizable(false);
	mainUserInterface.getMainWindow().setSize(mainUserInterface.getMainWindow().getSize());

	} else if (event.getSource() == measuredButton) {

	cl.show(mainUserInterface, PanelList.MEASUREMENT.toString());
	mainUserInterface.getMainWindow().setResizable(true);
	mainUserInterface.getMainWindow().setSize(mainUserInterface.getMainWindow().getSize());
}

Woher kommt das? Ich setze die Grösse des Fensters nach jedem Wechsel bewusst auf die zu Beginn definierte Dimension - und trotzdem ändert sie sich...

Ist das ein Bug oder was? Mich, und ich könnte mir Vorstellen den Benutzer ebenfalls, stört es. Das Fenster verhaltet sich unnötig unruhig 🙁

freundliche Grüsse

AcE
 
Zuletzt bearbeitet:
Hallo AcE,

ich verstehe nicht ganz was du mit der Zeile machen willst:
Code:
mainUserInterface.getMainWindow().setSize(mainUserInterface.getMainWindow().getSize());
Du setzt damit die bereits gesetzte Größe. Wozu ?

Zum Resize:
Wenn das Resizable gesetzt wird, ändert sich evtl. an dem Frame Layout etwas.
Der Rahmen wird dicker/dünner? Icons zum Vergrößern/Verkleinern oder so was
und dadurch wird das Frame verändert?
Das könnte vielleicht auch abhängig vom UiManager oder Betriebssystem sein.

setSize() setzt eine Dimension des Frames. Schau dir aber in dem Zusammenhang auch die Methoden und deren javadoc an.
setPreferredSize(preferredSize)
setMinimumSize(minimumSize)
setMaximumSize(maximumSize)

Gruss hiti
 
Der Rahmen bleibt gleich gross, lediglich das Frame wird wenige mm breiter bzw. schmäler

Die Zeile ist irrelevant. Sie soll lediglich verdeutlichen, dass die Grösse nicht verändert wird.

unbenannt.png



Das BIld zeigt zwei Mal das selbe Frame. EInmal ein resizable Pane und das andere Mal ein nicht resizable Frame

grüsse

AcE
 
Zuletzt bearbeitet:
Ist das Problem nicht bekannt?

Einfach ausgedrückt:

mittels CardLayout werden die JPanels panelA und panelB verwaltet. Wechselt der User nun von panelA auf panelB, wird das JFrame resizable gemacht.

Dabei wird das JFrame jedoch automatisch (ich ändere soweit NICHTS an der Dimension) ein paar Pixel kleiner. Warum?

Habe schon an einen Workaround gedacht, bei dem ich das JFrame beim Wechsel auf panelB einfach ein paar Pixel grösser mache, und beim Wechsel von zurück wieder kleiner.

Jedoch würde ich zuerst gerne verstehen warum das Problem überhaupt auftritt

cheerio
 

Zurück
Oben