SWT Popup-Menu Problem (Position)

Status
Nicht offen für weitere Antworten.

ich_wills_wissen

Bekanntes Mitglied
Hallo zusammen,

ich tüftel nun schon seit Stunden hier rum und komme nicht weiter.
Es geht um folgendes:
Ich schreibe derzeit ein Eclipse Plugin. Innerhalb des Plugins gibt es eine Klasse "TopicView" die von ViewPart erbt ("TopicView extends ViewPart").
Innerhalb von Viewpart habe ich ein Composite, welches wiederum ein Label enthält. Ich möchte nun Folgendes:
Wenn ich mit der rechten Maustaste auf das Label klicke soll ein Popup-menu erscheinen (und zwar dort wo der Mauszeiger ist).
Das Problem: Das Popupmenu erscheint, allerdings nicht da wo der Mauszeiger ist!

Mein Code:
Code:
public void mouseDown(MouseEvent e)
         {
            
            if(e.button == 3)
            {
               Menu menu = new Menu(label);
               menu.setLocation(e.x,e.y);
               MenuItem item = new MenuItem(menu, SWT.PUSH);
                 item.setText("Menu Item");
                 item.addListener(SWT.Selection, new Listener() {
                    public void handleEvent(Event e)    
                    {
                       System.out.println("Item Selected");
                    }});
                
                 menu.setVisible(true);
                 while (!menu.isDisposed() && menu.isVisible()) {
                   if (!Display.getCurrent().readAndDispatch())
                     Display.getCurrent().sleep();
                 }
                 menu.dispose();
            }
            
            
         }
      });
Wenn ich nur e.x und e.y ausgeben lasse zeigt er die Koordinaten innerhalb des labels an, also z.B. 4 (x) und 17(y). Das Popupmenu zeichnet sich auch an diesen Koordinaten, allerdings nicht relativ zum Label sondern zum Bildschirm, d.h. Das Popupmenu erscheint ganz links oben auf dem Bildschirm!
Ich weiß so langsam echt nichtmehr weiter.. hat jemand zufällig eine Idee wie ich das lösen kann ? Wäre echt toll..

Verzweifelt-entnervte Grüße,

ich_wills_wissen
 
merlin2 hat gesagt.:
Vielleicht mit
e.x+label.x, e.y+label.y
oder label.getLocationOnScreen() ?

Also die Methode label.getLocationOnScreen existiert irgendwie nicht.. sicher das wir beide gerade über das Gleiche reden? ;-)
Das Label ist ein org.eclipse.swt.widgets.Label...
Auch das CLabel kennt diese Methode nicht.

e.x+label.x, e.y+label.y bringt leider nicht das gewünschte Ergebnis, weil label.x und label.y die Koordinaten relativ zum Parent liefern und nicht zum Display..
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben