0

イベント表示スレッド(EDT)からどのイベントが管理されるかを理解しようとしています。

単純なもの、つまりJOptionPaneを単純に開き、ユーザーの応答を待ってから閉じる単純なコードを想定してみましょう。このオブジェクトに関連するどのイベントが現在EDTに配置されていますか?それは:a)オブジェクト(JOptionPane)の作成だけです。b)オブジェクトの存続期間中のすべてのオブジェクト関連イベント。C)何か他のもの(具体的に記入してください)。

ありがとうございました、

エリオット

下記参照:

        try {
            SwingUtilities.invokeAndWait(new Runnable() {
                public void run(){
                    JOptionPane.showMessageDialog(myComponent, msg);
                }
            });
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
4

2 に答える 2

2

私が覚えている限りでは、次の「イベント」はすべて EDT で実行されます。

  • エンド ユーザーによって直接トリガーされるすべてのイベント (マウス イベント、キー イベント)、およびこれらによってトリガーされるすべての高レベル イベント (アクション、フォーカスなど)。実際、すべての AWT および Swing EventListeners は常に EDT で呼び出されると言えます。
  • すべてのペイント コード (領域をペイントする必要があるときはいつでも、コンポーネントの変更またはウィンドウのサイズまたは位置の変更によってトリガーされる)
  • SwingUtilities.invokeAndWait()またはを介し​​て呼び出されるコードSwingUtilities.invokeLater()
于 2011-10-17T07:20:29.343 に答える
1

すべてのJOptionPaneダイアログはモーダルです。他のウィンドウへのユーザー生成の入力イベントはブロックされますが、EventQueueはすべてのウィンドウのイベントを処理し続けます。このDialogTestでは、入力を待機している間、アニメーションが続行されJOptionPane.showMessageDialog()ます。ここに関連する議論があります。

于 2011-10-16T17:30:45.203 に答える