如何在gwt中将弹出窗口放置在鼠标位置。 我有一个巨大的flextable和flextable包含按钮。如果按下某个按钮,弹出窗口会显示一些数据,但弹出窗口总是显示在页面的顶部。 如果用户位于表格的底部,那么弹出窗口将不在视图中,并且他们无法看到它?GWT - 弹出位置
如何获得鼠标位置的x和y坐标?
如何在gwt中将弹出窗口放置在鼠标位置。 我有一个巨大的flextable和flextable包含按钮。如果按下某个按钮,弹出窗口会显示一些数据,但弹出窗口总是显示在页面的顶部。 如果用户位于表格的底部,那么弹出窗口将不在视图中,并且他们无法看到它?GWT - 弹出位置
如何获得鼠标位置的x和y坐标?
要显示弹出窗口,请使用center()
方法而不是show()
方法。这应该创建一个弹出窗口并将其显示在浏览器视口的中心。
要获得鼠标位置,您可以使用getClientX/Y()或getScreenX/Y()从传递给事件处理函数的事件中获取鼠标位置。
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);
}
});
}
});
}
}
popup.showRelativeTo()保存了我的一天! – EMM
在您主面板中添加这一点,并保存在一个全局变量的坐标对象为静态的(?)
main_verticalPanel.addDomHandler(new MouseMoveHandler() {
@Override
public void onMouseMove(MouseMoveEvent event) {
GlobalVars.mouseX = event.getX();
GlobalVars.mouseY = event.getY();
}
}, MouseMoveEvent.getType());
然后在你的代码的其他地方得到的坐标。
您的解决方案工作..谢谢:) – sap
我很高兴我可以帮助:-)。 – helpermethod