GWT:RichTextArea中的上下文菜单

GWT:RichTextArea中的上下文菜单,gwt,richtextbox,contextmenu,Gwt,Richtextbox,Contextmenu,我正在GWT应用程序中使用RichTextArea。我想在我的RichTextArea中添加上下文菜单: public class MyRichTextArea extends RichTextArea implements HasContextMenuHandlers { public HandlerRegistration addContextMenuHandler(ContextMenuHandler h) { return addDomHandler(h, Con

我正在GWT应用程序中使用RichTextArea。我想在我的RichTextArea中添加上下文菜单:

public class MyRichTextArea extends RichTextArea implements HasContextMenuHandlers {
    public HandlerRegistration addContextMenuHandler(ContextMenuHandler h) {
        return addDomHandler(h, ContextMenuEvent.getType());
    }
}
(……)

不过,这是可行的,只有在我右键单击RichTextArea的边框时,关联菜单才会出现。如果我右键单击RichTextArea(例如,在包含的文本上),则会显示浏览器的默认上下文菜单


如何显示我自己的上下文菜单?

我会使用一种方法,告诉您富文本区域有焦点,比如hasfocus,或者更好的方法,一个事件侦听器(addFocusListener),通过单击鼠标右键来告诉您焦点何时在那里


这有意义吗?

防止默认上下文memu:

myRichTextArea.addDomHandler(new ContextMenuHandler() {

@Override public void onContextMenu(ContextMenuEvent event) {
    event.preventDefault();
    event.stopPropagation();
            // do what you want to do instead
}

},ContextMenuEvent.getType())

您可能希望拦截对RichtTextArea子元素的鼠标右键单击以显示上下文菜单。您还可以尝试向RichTextArea添加鼠标处理程序。FocusEvent不包含有关小部件如何获得焦点的任何信息。也就是说,我无法区分它是因为鼠标右键还是左键点击而获得焦点。你没有说你无法检测到鼠标右键点击。你说你的代码只在边境上运行。这里有一个参考,但我认为如果您测试event.button==2或event.button==3,那么您就涵盖了所有基础。无论如何,如果你检查按钮2或3,但它仍然不起作用,那就是我会检查焦点的时候-在这两个按钮中的一个被点击后。这有意义吗?基本上,我是说检查左键点击,然后确保你的文本区域有焦点-然后你就会知道你想要显示一个上下文菜单,如果你有多个,你应该知道哪一个(比如如果多个html元素有一个上下文菜单)。无论如何,希望这是有意义的,并且对你有帮助。好吧,这是可行的,但它不会阻止本地上下文菜单出现。所以这并不能解决我的问题。是的,我发现我也有浏览器上下文菜单
myRichTextArea.addDomHandler(new ContextMenuHandler() {

@Override public void onContextMenu(ContextMenuEvent event) {
    event.preventDefault();
    event.stopPropagation();
            // do what you want to do instead
}