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) );