Um die absoluten Koordinaten des Elements am Bildschirm zu bestimmen, können wir folgende Idee einsetzen: Zunächst bestimmen wir die Koordinaten des Elements relativ zum Fenster. Sie sollen in den Variablen x und y stehen. Dann hangeln wir uns von der aktuellen Komponente bis zum aktuellen Fenster durch und fragen das Frame-Objekt über getLocation() nach der absoluten Position. Die Fenster-Koordinaten addieren wir zu den relativen Komponenten-Koordinaten, um die absoluten Koordinaten zu erhalten.
Component c = this;
while ( (c = c.getParent()) != null )
if ( c instanceof JFrame )
break;
if ( c != null )
{
Point p = ((JFrame) c).getLocation();
x += p.x;
y += p.y;
}
Die Methode SwingUtilities.getWindowAncestor(Component) läuft für eine gegebene Komponente selbständig hoch und liefert das Window-Objekt oder null. Um einem Fenster ein Ereignis zum Schließen zu schicken, schreiben wir einfach:
Window w = SwingUtilities.getWindowAncestor( c ); w.dispatchEvent( new WindowEvent(w, WindowEvent.WINDOW_CLOSING) );