Erklärend sei noch erwähnt, dass das
mouseDragged-Ereignis des
MouseMotionListeners bei
JInternalFrames nicht funktioniert (scheinbar weil die Komponente unter dem Mauszeiger mitbewegt wird).
Allerdings feuert
componentMoved auch, wenn der
JInteralFrame per Code bewegt wird - dies ist in meimem Fall nicht gewollt. Entweder ich verwende hierfür wiederum ein Flag - oder ich nutze doch einen
DesktopManager in Kompination mit einem
MouseMotionListener... :autsch:
Ich hoffe ich habe jetzt niemanden durcheinander gebracht.
[EDIT]Nein, "
DesktopManager in Kompination mit einem
MouseMotionListener" funzt nicht:
Sobald sich die Maus über einem
JInternalFrame befindet, werden keine Ereignisse mehr gefeuert.
Evtl. könnte man den
MouseMotionListener an jedes
JInternalFrame heften - dann kann ich es aber auch gleiche wie oben beschrieben mit einem
ComponentListener lösen. - Ein Flag würde in beiden Fällen gebraucht...
[/EDIT]
[EDIT]Nein, "Evtl. könnte man den
MouseMotionListener an jedes
JInternalFrame heften" funzt ebenfalls nicht:
Hier gibt es nur ein
mouseMoved-Ereignis, wenn man den Mauszeiger von der Komponente, welche die ContentPane verdeckt, wegbewegt. Dabei werden Bewegungen über dem Fensterrand selber nicht erkannt (scheinbar, weil für diesen Rand Windows verantwortlich ist).
Das
mouseDragged-Ereignis wird nur gefeuert, wenn man die Größe des
JInternalFrame verändert - nicht aber, wenn man es bewegt.
[/EDIT]
[TIPP]Meinen Tests zufolge geht wirklich nur mit einem
ComponentListener an jedem
JInternalFrame + ein Flag, welches dem
componentMoved-Ereignis anzeigt, wenn Fenster per Code verschoben werden.[/TIPP]
Sollte jemand dazu noch einen besseren Einfall haben, dann bitte her damit.
Ansonsten betrachte ich mein Anliegen als erledigt. Ich hoffe meine Ausführungen können anderen vlt. hilfreich sein.