2012-07-04 138 views
2

如何將彈出窗口定位在GWT中鼠標單擊的位置。我嘗試使用getX和getY來設置彈性,並將Popup設置爲該位置,但這不起作用。定位彈出窗口GWT

回答

2

簡單的例子:

final RootLayoutPanel rootLayoutPanel = RootLayoutPanel.get(); 

final FocusPanel focusPanel = new FocusPanel(); 

/* just to make the clickable area visible */ 
focusPanel.getElement().getStyle().setBackgroundColor("red"); 

rootLayoutPanel.add(focusPanel); 


final PopupPanel popupPanel = new PopupPanel(); 
popupPanel.add(new Label("Popup")); 
popupPanel.show(); 

focusPanel.addClickHandler(new ClickHandler() { 

    @Override 
    public void onClick(final ClickEvent event) { 
    final int left = event.getClientX(); 
    final int top = event.getClientY(); 

    popupPanel.setPopupPosition(left, top); 
    } 
}); 

注:

  • 確保添加後focusPanel展現PopupPanel,否則這將是focusPanel後面。
  • 我使用RootLayoutPanel這裏,但你也可以工作,相對於不同的元素(使用left = event.getRelativeX(myContextElem);等)
  • 如果你不想使用FocusPanel(其中有ClickHandlers),你可以選擇使用一個MouseDownHandler,但在這種情況下,您需要致電sinkEvents(Event.ONMOUSEDOWN)