GWT Custom 右键单击​​小部件

GWT Custom right click on a widget

我需要实现可以右键单击以禁用它并右键单击以再次启用它的小部件。 我的代码是这样的:

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());

这在启用小部件时有效。这意味着我可以右键单击以禁用此小部件。 但是,当widget被禁用时,它不会触发右键单击事件。

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

谢谢,

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

  • 禁用小部件后,创建一个不透明度为 0 且尺寸与小部件相同的标签,并将其放置在带有重新启用小部件并自行删除的 ContextMenuHandler 的小部件上。
  • 不是禁用小部件,而是将其替换为已禁用小部件的图像。 有点 hack,但如果这是一次性的,可能会奏效
  • 禁用小部件后,向其添加不同的事件处理程序以重新启用它(您可以尝试 MouseDown、MouseOver、Click)。