GWT自定义右键单击小部件

GWT自定义右键单击小部件,gwt,right-click,Gwt,Right Click,我需要实现的小部件,我可以右击禁用它,右击再次启用它。 我的代码如下: widget.sinkEvents(Event.ONCONTEXTMENU); widget.addHandler(new ContextMenuHandler() { @Override public void onContextMenu(ContextMenuEvent event) { event.preventDefault(); event.stopPropa

我需要实现的小部件,我可以右击禁用它,右击再次启用它。 我的代码如下:

widget.sinkEvents(Event.ONCONTEXTMENU);
widget.addHandler(new ContextMenuHandler() {
    @Override
    public void onContextMenu(ContextMenuEvent event)
    {
        event.preventDefault();
        event.stopPropagation();
        if (widget.isEnabled()) widget.setEnabled(false);
        else widget.setEnabled(true);
    }
}, ContextMenuEvent.getType());
当小部件被启用时,此功能将起作用。这意味着我可以右键单击以禁用此小部件。 但是,当小部件被禁用时,它不会触发右键单击事件

有没有办法让我的自定义右键单击在禁用的小部件上工作


谢谢,

如果事件没有在禁用的小部件上触发,您可以尝试以下解决方法之一:

  • 禁用小部件后,创建一个不透明度为0的标签,其尺寸与小部件相同,并使用ContextMenuHandler将其放置在小部件上,重新启用小部件并移除其自身
  • 与其禁用小部件,不如将其替换为已禁用小部件的图像。 有点像黑客,但如果这是一次性的,可能会奏效
  • 禁用小部件后,向其添加其他事件处理程序以重新启用它(您可以尝试MouseDown、MouseOver、Click)
谢谢。这很有帮助。我试了你提到的第二种方式,但有点难看。使用鼠标点击听起来是正确的方法。