0

我有一个带有 autoHide = true 的 PopuppupPanel。除了我点击 RichTextArea 的情况外,它工作得很好。如果我点击它,什么也不会发生,并且 PopupPanel 不会自动关闭。

我检查了“自动关闭”PopupPanel 的代码。当面板显示时,他们添加了一个 Handler,如下所示:

nativePreviewHandlerRegistration = Event.addNativePreviewHandler(new NativePreviewHandler() {
    public void onPreviewNativeEvent(NativePreviewEvent event) {
      previewNativeEvent(event);
    }
  });

..并且在 previewNativeEvent(event) 中,如果满足某些条件,它们会隐藏面板,尤其是 MouseDownEvent 被捕获。

但看起来 RichTextArea 没有触发 MouseDownEvent!在调试 previewNativeEvent(event) 时我无法捕获此事件。看来我必须手动触发它。我在 RichTextArea 的容器或其父级上触发它,它们分别是 HTMLPanel 和 div:

myPanel.fire(new MouseDownEvent() {});

但这没有给我任何结果:如果我在事件目标上添加 MouseDownHandler 可以捕获该事件,但它不会被我上面提到的 NativePreviewHandler 捕获。

所以,最后:

  1. 为什么我的 RichTextArea 不能“自动关闭”我的 PopupPanel?
  2. 当我认为 PreviewNativeEventHandler 应该捕获系统中的所有事件并且我可以使用该处理程序打印以记录我的应用程序中的所有事件时,我是对的吗?
  3. 为什么 PreviewNativeEvent 处理程序没有从我的 RichtextArea(原始的或人工的)中捕获 MouseDown 事件?
4

1 回答 1

0

RichTextArea 使用 iframe 进行富文本编辑器。PreviewNativeEvent 只是当前页面的预览。您可以尝试在 textarea 之前添加掩码以捕获事件。蒙版只是一个 div,它以透明背景占据所有屏幕。弹出面板有一个遮罩选项,尝试使用它:

final PopupPanel popup = new PopupPanel(false, true); // Create a modal dialog box that will not auto-hide
popup.add(new Label("Please wait"));
popup.setGlassEnabled(true); // Enable the glass panel
popup.center(); // Center the popup and make it visible
于 2013-09-17T09:11:40.890 回答