0
GWT MenuItem擴展UIObject - 任何想法如何添加事件處理程序,例如我想要一個特殊的上下文菜單,右鍵單擊MenuItem。謝謝!將上下文菜單附加到GWT MenuItem
GWT MenuItem擴展UIObject - 任何想法如何添加事件處理程序,例如我想要一個特殊的上下文菜單,右鍵單擊MenuItem。謝謝!將上下文菜單附加到GWT MenuItem
可以使用MenuItem對象的基礎元素:
final Element element = menuItem.getElement();
Event.addNativePreviewHandler(new Event.NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(Event.NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONMOUSEDOWN
&& event.getNativeEvent().getButton() == Event.BUTTON_RIGHT
&& event.getNativeEvent().getEventTarget().equals(element)) {
showSpecialMenu();
}
}
});
Event.sinkEvents(element, Event.ONMOUSEDOWN);
或像這樣(你也可以防止默認的上下文菜單):
final Element element = menuItem.getElement();
Event.addNativePreviewHandler(new Event.NativePreviewHandler() {
@Override
public void onPreviewNativeEvent(Event.NativePreviewEvent event) {
if (event.getTypeInt() == Event.ONCONTEXTMENU && event.getNativeEvent().getEventTarget().equals(element)) {
// prevent default context menu
event.getNativeEvent().stopPropagation();
event.getNativeEvent().preventDefault();
// show custom context menu
showSpecialMenu();
}
}
});
Event.sinkEvents(element, Event.ONCONTEXTMENU);
你都可以做這樣的:
......
Event.sinkEvents(element, Event.ONCONTEXTMENU | Event.ONMOUSEDOWN);
非常感謝,捕捉事件,但我仍然看到本地上下文菜單,而不是我的。 – user1176505 2014-12-20 11:41:56
奇怪的是第二個不適合我 - 我從來沒有看到一個ONCONTEXTMENU事件拋出。但爲了我的目的有一個上下文菜單,即使沒有抑制本地菜單它是一個很大的幫助,謝謝。 我也有這最終是活動對象,所以我用 element.toString(菜單項中的超鏈接)。包含(event.getNativeEvent()。getEventTarget()。toString()方法) 謝謝再次 – user1176505 2014-12-21 06:05:14
嗯。我其實從來沒有得到這個工作,因爲我有一個超鏈接在MenuItem中,事件來自超鏈接,但元素是MenuItem。 在GWT開發模式,它 element.toString()。含有偉大的工作(event.getNativeEvent()。getEventTarget()。的toString()) 但是一旦編譯失敗,我無法找到任何方式來匹配右鍵單擊它來自哪個menuItem的事件。此外,菜單項getAbsoluteTop()即使在可見時也爲零(請參閱http://stackoverflow.com/questions/27644719/gwt-menuitem-in-a-submenu-has-zero-getabsolutetop-getabsoluteleft) – user1176505 2014-12-25 19:23:57