nul*_*ull 5 javafx webview javafx-2
我正在寻找一种方法来阻止/禁用javafx.scene.web.WebView中的右键单击.更具体地说,我不希望右键单击显示上下文菜单.我是这项技术的新手,无法找到实现这一目标的方法.
Pet*_*ull 14
仅供记录,它在JavaFX 2.2中实现.请参阅setContextMenuEnabled的文档
我想出了工作,但是丑陋,不优雅,我会说,党派解决方案,我不喜欢,但实际上我没有(或者只是找不到)其他出路.
它包括修改WebView的EventDispatcher.
所以我的EventDispatcher实现需要对原始WebView EventDispatcher的引用,看起来像这样:
public class MyEventDispatcher implements EventDispatcher {
private EventDispatcher originalDispatcher;
public MyEventDispatcher(EventDispatcher originalDispatcher) {
this.originalDispatcher = originalDispatcher;
}
@Override
public Event dispatchEvent(Event event, EventDispatchChain tail) {
if (event instanceof MouseEvent) {
MouseEvent mouseEvent = (MouseEvent) event;
if (MouseButton.SECONDARY == mouseEvent.getButton()) {
mouseEvent.consume();
}
}
return originalDispatcher.dispatchEvent(event, tail);
}
}
Run Code Online (Sandbox Code Playgroud)
每次调度事件时,都会通过我们的调度员检查是否正确点击.如果它是我只是消耗它并继续前进.
要使其工作,您必须使用WebView:
WebView webView = new WebView();
EventDispatcher originalDispatcher = webView.getEventDispatcher();
webView.setEventDispatcher(new MyEventDispatcher(originalDispatcher));
Run Code Online (Sandbox Code Playgroud)
每个评论,线索等都表示赞赏.