0

autoHide = true の PopuppupPanel があります。RichTextAreaをクリックした場合を除いて、完璧に機能します。クリックしても何も起こらず、PopupPanel は autoClosed ではありません。

PopupPanel を「autoCloses」するコードを調べました。パネルが表示されたら、次のような Handler を追加します。

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

..and previewNativeEvent(event) では、特定の条件が満たされた場合、特に MouseDownEvent がキャッチされた場合にパネルを非表示にします。

しかし、RichTextArea が MouseDownEvent を起動していないようです! previewNativeEvent(event) のデバッグ中にこのイベントをキャッチできません。手動で発射する必要があるようです。RichTextArea のコンテナー、またはその親 (それぞれ HTMLPanel と div) で起動します。

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

しかし、これでは何の結果も得られません。イベント ターゲットに MouseDownHandler を追加するとイベントをキャッチできますが、上記の NativePreviewHandler ではキャッチされません。

だから、最後に:

  1. RichTextArea が PopupPanel を「autoClose」できないのはなぜですか?
  2. PreviewNativeEventHandler がシステム内のすべてのイベントをキャッチする必要があり、たとえば、そのハンドラーを使用してアプリ内のすべてのイベントをログに記録できると考えるとき、私は正しいですか?
  3. PreviewNativeEvent Handler が元のまたは人工的な RichtextArea から MouseDown イベントをキャッチしないのはなぜですか?
4

1 に答える 1

0

RichTextArea は、リッチ テキスト エディターを実行するために iframe を使用します。PreviewNativeEvent は、現在のページのみのプレビューです。イベントをキャッチするために、テキストエリアの前にマスクを追加してみてください。マスクは、透明な背景ですべての画面を取得する単なる 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 に答える