Swing JFrame Größe ermitteln

hdi

Top Contributor
Hey,

Ich habe gerade ein kleines Problem mit den (Extended)States eines JFrame. Irgendwie kapier ich die Logik dahinter nicht gnaz. Ich möchte gerne die aktuelle Größe des Frames im NICHT-maximierten und NICHT-minimierten Zustand abfragen.

Mit maximierten Frame klappt das auch:

Java:
if(getExtendedState() == MAXIMIZED_BOTH){
   setExtendedState(NORMAL);
   // getWidth/getHeight
}

Ich wechsle erst zum normalen Zustand, da ich sonst nicht weiß wie ich auf die nicht-maximierte Größe zugreifen könnte?! Nun denn, es funktioniert und liefert mir die urspürngliche Größe (die das Frame hat wenn man es aus dem maximierten Zustand wiederherstellt).

Aber wenn das Fenster maximiert UND minimert ist, klappt das nicht:

Java:
if(getExtendedState() == MAXIMIZED_BOTH + ICONIFIED){
   setExtendedState(NORMAL);
   // getWidth/getHeight
}

Der Wert auf den ich prüfe stimmt schon. Die Addition beider Werte ist genau der Zustand den man hat wenn das Fenster zwar gemaxed ist, aber grad minimiert. Aber das wechseln zum normalen Zustand funktioniert hier einfach nicht, und es wird mir die Größe im maximierten Zustand geliefert.

Ich weiß dass er intern bitweise Verknüpfungen macht. Aber die Konstante NORMAL hat den Wert 0, und setExtendedState() macht eine ganz einfache Zuweisung zu der state-Variablen. Eigentlich müsste er das Fenster damit aus dem minimierten Zustand rausholen?!

Also wie kann ich die eigentliche, nicht-maximierte Größe herausfinden wenn das Frame gerade minimiert ist? Und generell: Das geht doch auch besser? Es scheint mir komisch dass ich erstmal programmatisch in einen anderen State wechseln muss um die Größe abfragen zu können. Was ich suche ist eigentlich sowas wie getNonMaximizedSize(). Irgendwo muss er sich das ja abspeichern um beim Klick auf Wiederherstellen in die alte Größe zu kommen, ich hab jetzt auf die schnelle im Source aber auch nicht gesehen wo er das abspeichert.

Danke
 

Marco13

Top Contributor
So halb, glaub' ich zumindest, aber ... ich gehe ehrlich gesagt davon aus, dass das Betriebssystem (bzw. der Fenstermanager) da auch ein Wörtchen mitzureden hat, und das erstmal nicht so OS-agnistisch durch AWT nach draußen geroutet wird. Ich habe bei der Windows-API nur vor Ewigkeiten mal an der Oberfläche gekratzt, aber von einem schnellen Websuchergebnis aus kann man sich über Window Features zu sowas wie WINDOWPLACEMENT structure hangeln, was nahelegt, dass die Größe, die du (falls ich es richtig verstanden habe) suchst, im "RECT rcNormalPosition;" gespeichert ist...
 

bERt0r

Top Contributor
Also ich kann dein Problem auf Windows Vista + Java 7 nicht nachvollziehen. Bei mir klappt das so wie du dir das vorstellst.
[Edit]Und sowas banales wie einfach nochmal setExtendedState(NORMAL); zu machen hast du schon probiert, oder? :D[/Edit]
 
Zuletzt bearbeitet:

hdi

Top Contributor
Uff, ich hab das Problem grad gefunden. Durch die übergeordnete Logik meiner App wird mein Fenster beim Minimieren zusätzlich auf setVisible(false) gesetzt. Ich musste vor dem setExtendedState(NORMAL) das Fenster erstmal sichtbar machen, andernfalls scheint er damit nicht klar zu kommen. Nach dieser Änderung hat's zwar geklappt, aber noch immer nicht besonders schön. Ihr müsst euch vorstellen das Programm läuft im Hintergrund (Tray-Eintrag), und nun wird beim Beenden das Fenster kurz sichtbar geschaltet, dann auch noch aus dem maximierten Zustand in den wiederhergestellten Zustand gewechselt. Sieht dann für den User so aus als würde das Prog beim Beenden nochmal nen kleinen Spastiker-Anfall haben ;) Die Lösung war jetzt letztendlich folgende:

Java:
if (state == stateMaxed) {
	setVisible(true); // Das ist jetzt nur bei mir der Fall
	setExtendedState(NORMAL);
	setExtendedState(ICONIFIED); // Das verhindert ein kurzes Aufploppen des Fensters
	// getWidth(), getHeight()
}

Zu beachten ist, dass man tatsächlich erst auf NORMAL schalten muss und dann nochmal auf ICONIFIED. Nur Iconified alleine liefert den falschen Wert (maximierter Zustand). Der Setter macht also wohl doch mehr als nur einen Wert ersetzen. Wie gesagt, irgendwelche bitweisen Verknüpfungen.

Naja, Problem gelöst. Danke euch, vorallem bert0r, durch deinen Test der bei dir positiv ausfiel hab ich mir nochmal ein KSKB gemacht und dann bemerkt dass mein JFrame halt nicht ganz "normal" ist ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Swing JFrame ändert Größe AWT, Swing, JavaFX & SWT 0
MaxG. JFrame Größe ändern AWT, Swing, JavaFX & SWT 16
P Jframe Bild einfügen, Hintergrund Farbe ändern, und Button schrift Größe ändern AWT, Swing, JavaFX & SWT 2
G JFrame - manuell Größe verändern AWT, Swing, JavaFX & SWT 6
S Swing JFrame hat nicht die Größe, die ich eingegeben habe AWT, Swing, JavaFX & SWT 3
C LayoutManager JFrame größe und ausrichtung + Position von Fensterelementen AWT, Swing, JavaFX & SWT 2
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
SimonRap Swing JFrame Größe zur Laufzeit ändern AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Größe der JFrame Decorations herausfinden? AWT, Swing, JavaFX & SWT 4
O Swing Jpanel autom. auf JFrame Größe bringen AWT, Swing, JavaFX & SWT 6
K JFrame Größe ändern AWT, Swing, JavaFX & SWT 4
S Swing jFrame auf maximale Größe setzten AWT, Swing, JavaFX & SWT 7
L JFrame größe in einem ActionEvent ändern AWT, Swing, JavaFX & SWT 4
C Swing JFrame nachträglich Größe ändern AWT, Swing, JavaFX & SWT 6
C Swing JPanel Größe relativ zum JFrame AWT, Swing, JavaFX & SWT 9
O Größe von Komponenten im JFrame manuell verändern AWT, Swing, JavaFX & SWT 2
M Swing Komponenten mit fester Größe an Fensterrand(JFrame) AWT, Swing, JavaFX & SWT 2
K JFrame-Größe an inneren Container anpassen AWT, Swing, JavaFX & SWT 2
J Größe von JFrame vor Maximierung AWT, Swing, JavaFX & SWT 2
G actionlistener bei änder der Jframe-größe AWT, Swing, JavaFX & SWT 5
F JFrame Änderung der Größe erkennen AWT, Swing, JavaFX & SWT 2
T [gelöst] JFrame Grundlagen (Größe und Darstellung) AWT, Swing, JavaFX & SWT 6
G JFrame Größe AWT, Swing, JavaFX & SWT 2
T JFrame minimale Größe AWT, Swing, JavaFX & SWT 2
G Maximale Größe JFrame AWT, Swing, JavaFX & SWT 2
D JFrame Größe auf ContentPane Größe abstimmen AWT, Swing, JavaFX & SWT 2
N JPane in JFrame Größe AWT, Swing, JavaFX & SWT 5
P JFrame Größe blocken AWT, Swing, JavaFX & SWT 4
H Mehrere Panels auf JFrame AWT, Swing, JavaFX & SWT 8
M Seltsame Exception bei setVisible(true) Methode in einem JFrame AWT, Swing, JavaFX & SWT 2
Paty JFrame anfänger bräuchte hilfestellung AWT, Swing, JavaFX & SWT 7
Apfelbaum2005 Swing JFrame mehrere JPanels mit unterschiedlichen Formen hinzufügen AWT, Swing, JavaFX & SWT 1
N AWT JPanel zu Jframe hinzufügen AWT, Swing, JavaFX & SWT 2
Mausposition relativ zu JFrame bekommen AWT, Swing, JavaFX & SWT 6
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
N CPU Belastung bei offenem JFrame auf fast 100% AWT, Swing, JavaFX & SWT 15
N Knopf ganz oben (JFrame) AWT, Swing, JavaFX & SWT 9
N JFrame löscht alles, wenn groß gemacht AWT, Swing, JavaFX & SWT 9
N jFrame löscht am Ende des Threads alles AWT, Swing, JavaFX & SWT 2
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
E JFrame resizing AWT, Swing, JavaFX & SWT 2
E Swing Mausposition auf einem JFrame erkennen AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
L JFrame Gui in anderer Methode aufrufen AWT, Swing, JavaFX & SWT 0
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Tabelle in JFrame einfügen AWT, Swing, JavaFX & SWT 1
VPChief Ein JFrame ohne setUndecorated(true); nicht verschiebbar machen. AWT, Swing, JavaFX & SWT 6
R Swing Hat mein JFrame meinen Component? AWT, Swing, JavaFX & SWT 2
R Swing Design des oberen Balkens in JFrame AWT, Swing, JavaFX & SWT 2
B KeyListener auf JFrame reagiert nicht AWT, Swing, JavaFX & SWT 8
R Swing Komponente im JFrame überschreinen sich AWT, Swing, JavaFX & SWT 7
R Swing Ein gezeichneten String aus dem JFrame löschen AWT, Swing, JavaFX & SWT 5
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
T JFrame aktualisieren AWT, Swing, JavaFX & SWT 2
T Bilder bei einem JFrame einfügen AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
dereki2000 Swing JFrame nah hinzufügen von Komponenten akualisieren. AWT, Swing, JavaFX & SWT 2
T JFrame Bild einfügen AWT, Swing, JavaFX & SWT 9
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
P Swing Mehrere JPanels auf ein JFrame hinzufügen? AWT, Swing, JavaFX & SWT 2
F JFrame zeigt nicht alle Elemente auf anhieb an AWT, Swing, JavaFX & SWT 4
P JPanle, JFrame und Graphics AWT, Swing, JavaFX & SWT 2
T Reihenfolge der Komponenten im einem JFrame AWT, Swing, JavaFX & SWT 8
K Grafik in JFrame einpassen AWT, Swing, JavaFX & SWT 3
D Mit Jmenu neue JFrame öffnen AWT, Swing, JavaFX & SWT 2
J BackgroundJPanel passt sich dem JFrame nicht an AWT, Swing, JavaFX & SWT 7
J JFrame Panel hinzufügen AWT, Swing, JavaFX & SWT 10
K JFrame bei JUnit Tests AWT, Swing, JavaFX & SWT 2
W Swing Hilfe beim Einbinden von Bildern in einem JFrame AWT, Swing, JavaFX & SWT 8
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
R Swing JPanels auf JFrame auf verfügbaren Platz aufblasen AWT, Swing, JavaFX & SWT 4
JR2205 Swing JxMaps Einbindung Netbeans JFrame AWT, Swing, JavaFX & SWT 4
Zar von Domarus JFrame zu BufferedImage konvertieren AWT, Swing, JavaFX & SWT 3
K KeyListener ohne JFrame AWT, Swing, JavaFX & SWT 9
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
M Limit für JFrame-Vergrößerung AWT, Swing, JavaFX & SWT 8
GreenTeaYT Wie vergebe Ich den Jframe Title den Namen aus einem Element von der Arraylist ? AWT, Swing, JavaFX & SWT 4
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
G JFrame Probleme AWT, Swing, JavaFX & SWT 2
Ghostman1711 JFrame closing AWT, Swing, JavaFX & SWT 3
R Engineklasse mit JFrame AWT, Swing, JavaFX & SWT 4
M Default-WindowListener JFrame entfernen (Stichwort: iconified) AWT, Swing, JavaFX & SWT 4
ms_cikar Jframe zurück zu frame1 AWT, Swing, JavaFX & SWT 14
C Jframe ohne Rahmen AWT, Swing, JavaFX & SWT 3
lumpigerAffe Swing Jframe aktualisieren AWT, Swing, JavaFX & SWT 27
A Swing JFrame neuzeichnen lassen, position neu berechnen lassen? AWT, Swing, JavaFX & SWT 9
R JFrame schließen AWT, Swing, JavaFX & SWT 9
P Swing JFrame minimiert sich bei Doppelklick auf die Titel-Leiste AWT, Swing, JavaFX & SWT 17
krgewb AWT JFrame soll sich wie Dialog verhalten AWT, Swing, JavaFX & SWT 9
I JFrame an Bildschirm anpassen AWT, Swing, JavaFX & SWT 1
I JFrame Bild strecken und auf Bildschirmgröße anpassen AWT, Swing, JavaFX & SWT 2
P JFrame schrumpft bei Doppelklick auf die Titelleiste AWT, Swing, JavaFX & SWT 0
D JFrame mindestgröße erzwingen AWT, Swing, JavaFX & SWT 2
H Swing JFrame mit JFXPanel NPE bei dispose() AWT, Swing, JavaFX & SWT 6
C Swing Borderlayout im JFrame AWT, Swing, JavaFX & SWT 4
B JButton erscheint in JFrame, obwohl er diesem nicht zugeordnet wurde! AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben