2011-06-22 85 views
4

如何在gwt中將彈出窗口放置在鼠標位置。 我有一個巨大的flextable和flextable包含按鈕。如果按下某個按鈕,彈出窗口會顯示一些數據,但彈出窗口總是顯示在頁面的頂部。 如果用戶位於表格的底部,那麼彈出窗口將不在視圖中,並且他們無法看到它?GWT - 彈出位置

如何獲得鼠標位置的x和y座標?

回答

2

要顯示彈出窗口,請使用center()方法而不是show()方法。這應該創建一個彈出窗口並將其顯示在瀏覽器視口的中心。

+0

您的解決方案工作..謝謝:) – sap

+0

我很高興我可以幫助:-)。 – helpermethod

1

要獲得鼠標位置,您可以使用getClientX/Y()或getScreenX/Y()從傳遞給事件處理函數的事件中獲取鼠標位置。

8

showRelativeTo方法PopupPanel類在我的用例中運行良好。

import com.google.gwt.event.dom.client.ClickEvent; 
import com.google.gwt.event.dom.client.ClickHandler; 
import com.google.gwt.user.client.ui.Image; 
import com.google.gwt.user.client.ui.PopupPanel.PositionCallback; 

public class CommentPanelPopupImage extends Image { 
    public CommentPanelPopupImage(final int tableId, final String referenceId, final String title) { 
     super("external-link-ltr-icon.png"); 
     setTitle("Click to see comments"); 
     final CommentPanelPopupImage commentPanelPopupImage = this; 
     addClickHandler(new ClickHandler() { 

      public void onClick(final ClickEvent event) { 
       final CommentPopupPanel popup = new CommentPopupPanel(tableId, referenceId, title); 
       popup.setPopupPositionAndShow(new PositionCallback() { 

        public void setPosition(int offsetWidth, int offsetHeight) { 
         popup.showRelativeTo(commentPanelPopupImage); 
        } 
       }); 
      } 
     }); 
    } 
} 
+0

popup.showRelativeTo()保存了我的一天! – EMM

0

在您主面板中添加這一點,並保存在一個全局變量的座標對象爲靜態的(?)

main_verticalPanel.addDomHandler(new MouseMoveHandler() { 

      @Override 
      public void onMouseMove(MouseMoveEvent event) { 
       GlobalVars.mouseX = event.getX(); 
       GlobalVars.mouseY = event.getY(); 
      } 

     }, MouseMoveEvent.getType()); 

然後在你的代碼的其他地方得到的座標。