如何在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