SWT: Absolute Position eines Controls ermitteln

Tipp: "Control#getLocation()" liefert ja leider keine absolute Position (also in Bezug auf das Display) sondern nur eine relative Position zum Parent. Hiermit kann man jedoch auch die absolute Position ermitteln:
Text text = new Text(parent,SWT.BORDER);

// Liefert nur die relative Position
Point relativ = text.getLocation();

// Liefert die absolute Position
Point absolut = text.toDisplay(text.getLocation());
Damit kann man zum Beispiel ein Popup-Menu korrekt positionieren.

Trackbacks

Trackback-URL für diesen Eintrag

Dieser Link ist nicht aktiv. Er enthält die Trackback-URI zu diesem Eintrag. Sie können diese URI benutzen, um Ping- und Trackbacks von Ihrem eigenen Blog zu diesem Eintrag zu schicken. Um den Link zu kopieren, klicken Sie ihn mit der rechten Maustaste an und wählen "Verknüpfung kopieren" im Internet Explorer oder "Linkadresse kopieren" in Mozilla/Firefox.

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Franz am :

Leider nicht richtig.

Richtig ist:
Point absolut =text.toDisplay(0,0);

Olaf am :

Warum sollte das falsch sein? Es funktioniert doch. Welchen Sinn haette sonst der Parameter in der toDisplay()-Funktion. Vielleicht bist du aber auch ueber https://bugs.eclipse.org/bugs/show_bug.cgi?id=345004 gestolpert.

Smasher am :

Bei mir funktioniert's leider auch nicht. Ich bekomme die Koordinaten zu weit rechts. Was Franz angeben hat, funktioniert bei mir, oder alternativ könnte man das verwenden:

Point loc = text.getParent().toDisplay(text.getLocation());

Die Kommentarfunktion wurde vom Besitzer dieses Blogs in diesem Eintrag deaktiviert.