Java window resize event

Tumbleweed

Captain
Dabei seit
März 2008
Beiträge
3.598
Ich bin schon mehrmals auf das Problem gestoßen, dass ich kein event gefunden habe, welches einen resize-Vorgang anzeigt. Klar, die Standardlösung
Code:
        addComponentListener(new ComponentAdapter()
        {
            @Override
            public void componentResized(ComponentEvent e)
            {
                super.componentResized(e);
            }
        });
ist mir geläufig, allerdings besteht dabei das Problem, dass das erst gecallt wird, sobald die Maustaste losgelassen wird. Während der user den Fensterrahmen im Griff hat und hin und her bewegt, kommt da nichts an.

Interessanterweise habe ich einen uralten bug report gefunden, bei dem es genau darum geht:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4028562

Der ist aber als fixed abgetan. Nun frage ich mich - hab ich die Lösung für dieses Problem bisher nur übersehen? Ich hätte gerne eine elegante Lösung und kein Rumgefummel im Sinne von - bei Mausklick stelle ich fest, ob der Klick in der Nähe des Fensterrahmens geschah und nehme dementsprechend an, dass resized wird.
 

mercsen

Lt. Commander
Dabei seit
Apr. 2010
Beiträge
1.641
könnte mir vorstellen das soetwas im layout manager enthalten ist, der passt die elemente doch beim ziehen schon an oder nicht?
Vlt. kann man den ja was feuern lassen :-/
 

NemesisFS

Lt. Commander
Dabei seit
Sep. 2008
Beiträge
1.293
soweit ich weiß wird die paint methode doch wärend dem resizen ausgeführt, oder irre ich da?
 

Tumbleweed

Captain
Ersteller dieses Themas
Dabei seit
März 2008
Beiträge
3.598
Das ist richtig, allerdings weiß ich dann trotzdem noch nicht, ob der user gerade am resizen ist. :/
 

Killkrog

Lt. Junior Grade
Dabei seit
Jan. 2006
Beiträge
352
Du könntest zum Beispiel ein Dimension-Objekt anlegen, welches bei jedem paint die größe des fensters zugeordnet bekommt. Dann kannst du überprüfen, ob beim nächsten paint ein anderer wert existiert und demnach entscheiden, ob geresized wurde/wird oder nicht
 
1

1668mib

Gast
Bei mir wird der Listener in Echtzeit aufgerufen...
Könntest du mal den genauen Code schicken, den du verwendet hast?

Der Methoden-Aufruf "super.componentResized(e);" ist übrigens irgendwie sinnlos ...
 

mercsen

Lt. Commander
Dabei seit
Apr. 2010
Beiträge
1.641

Tumbleweed

Captain
Ersteller dieses Themas
Dabei seit
März 2008
Beiträge
3.598
Ich hab da mal was vorbereitet. :p

http://www.youtube.com/watch?v=aVRBFgoAvGE&hd=1

Da sieht man was ich meine. Erst wenn das resizen "abgeschlossen" ist, d.h. wenn ich die Maustaste loslasse, reagiert der listener. Ich möchte aber schon beim draggen bzw. beim "Anfassen" des Rahmens wissen, dass der user am resizen ist.
 
Zuletzt bearbeitet:
1

1668mib

Gast
Edit: Ganz einfach: Den Listener auf die ContentPane legen...

Wichtig: Den Position-Changed-Listener falls von Bedeutung auf dem JFrame lassen...
 
Zuletzt bearbeitet:

Ähnliche Themen

Top