2

GWTでマウスがクリックされた位置にポップアップを配置するにはどうすればよいですか。フレックステーブルで 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 に答える