Java window resize event

Tumbleweed

Captain
Registriert
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.
 
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 :-/
 
soweit ich weiß wird die paint methode doch wärend dem resizen ausgeführt, oder irre ich da?
 
Das ist richtig, allerdings weiß ich dann trotzdem noch nicht, ob der user gerade am resizen ist. :/
 
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
 
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 ...
 
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:
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

Zurück
Oben