0
我試圖捕獲一個小部件的右鍵點擊,彈出我自己的上下文菜單,而不是瀏覽器的。這裏有幾個參考文獻,但最流行的here有點過時,儘管一些評論包含更新的代碼片段。爲什麼不在GWT中右擊捕獲在IE中工作?
我拼湊了一些位,我已經在Chrome和FF中工作,但沒有IE。在IE中它不顯示默認的瀏覽器上下文菜單,但它不顯示我的菜單。我只是進入GWT,所以我假設我沒有正確地處理正確的處理程序或事件。我也使用gwt-graphics模塊,這就是我所擴展的Rectangle類來自哪裏,以防相關。
這裏是我的代碼:
public class RectangleRightClickable extends Rectangle {
public RectangleRightClickable(int x, int y, int width, int height) {
super(x, y, width, height);
sinkEvents(Event.ONCONTEXTMENU);
}
public void onBrowserEvent(Event event) {
GWT.log("onBrowserEvent");
event.stopPropagation();
event.preventDefault();
GWT.log("event type : " + DOM.eventGetType(event));
switch(DOM.eventGetType(event)) {
case Event.ONCONTEXTMENU:
if (DOM.eventGetButton(event) == Event.BUTTON_RIGHT) {
GWT.log("Event.BUTTON_RIGHT", null);
showMenu();
}
break;
default:
GWT.log(event.toString());
break;
}
}
protected void showMenu() {
final RectangleRightClickable parent = this;
final PopupMenu popMenu = new PopupMenu();
popMenu.addMenuItem(new Label("Add thing"));
popMenu.setPopupPositionAndShow(new PopupPanel.PositionCallback() {
public void setPosition(int offsetWidth, int offsetHeight) {
int left = parent.getX() + parent.getWidth();
int top = parent.getY() + parent.getWidth();
popMenu.setPopupPosition(left, top);
}
});
}
}