GWT - 弹出位置

时间:2011-06-22 14:53:31

标签: gwt

如何将gwt中的弹出窗口定位到鼠标位置。 我有一个巨大的flextable和flextable包含按钮。如果按下某个按钮,则弹出窗口会显示一些数据,但弹出窗口始终显示在页面顶部。 如果用户位于表格的底部,那么弹出窗口将不在视图中,他们无法看到它?

如何获得鼠标位置的x和y坐标?

4 个答案:

答案 0 :(得分:9)

PopupPanel 类的 showRelativeTo 方法在我的用例中运行良好。

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);
                    }
                });
            }
        });
    }
}

答案 1 :(得分:3)

要显示弹出窗口,请使用center()方法而不是show()方法。这应创建一个弹出窗口并将其显示在浏览器视口的中心。

答案 2 :(得分:1)

要获得鼠标位置,您可以使用已传递给事件处理函数的事件中的getClientX / Y()或getScreenX / Y()。

答案 3 :(得分:0)

在主面板中添加此项并将全局变量对象中的坐标保存为静态(?)

main_verticalPanel.addDomHandler(new MouseMoveHandler() {

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

        }, MouseMoveEvent.getType());

然后从代码中的其他位置获取坐标。