2

如何将 Popup 定位在 GWT 中的鼠标单击位置。我尝试在 flextable 上使用 getX 和 getY 并将 Popup 设置到该位置,但这不起作用。

4

1 回答 1

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).
于 2012-07-04T10:59:17.777 回答