0

このスレッドの本当の目的を理解しようとしています。私は本や記事を読みましたが、EventQueue スレッドが何を担当しているのかを明確に理解していませんでした。私は多くの例を見てきましたが、これが使用されることもあれば、使用されないこともあります。私が理解したように、このスレッドは、ウィンドウ、コンポーネントの作成、OS API からのネイティブ関数の呼び出しなど、すべての GUI 操作を担当しています。したがって、GUI の一部を変更するたびに、このアクションをキューに渡す必要があります。そのため、キュー アプリケーションを使用すると、デフォルトでメイン スレッドとイベント ディスパッチ スレッドの 2 つのスレッドがあります。したがって、すべてのビジネス ロジックはメイン スレッドで実行する必要があり (またはメイン スレッドから新しいスレッドを作成する)、すべての GUI 操作は EventQueue で実行する必要があります (たとえば、新しい項目をテーブルに追加したり、ラベル更新リストのテキストを変更したりします)。さらに、 EventQueue にメイン ウィンドウ (クラスは jframe を拡張) のインスタンスを作成する必要がありますか?

私は正しいですか?そうでない場合は、説明してください。よろしくお願いします。

4

2 に答える 2

1

要点がわかったようですね、はい。アプリケーションが本質的に「純粋な GUI」である場合は、EDT (Event Dispatch Thread、渡したものを実行するスレッド) ですべてを行うことができますEventQueue.invokeLaterが、EDT でウィンドウを作成する必要があります。つまり、main()メソッドはEventQueue.invokeLater少なくとも一度。

EventQueue.invokeLaterGUI オブジェクトのすべてのリスナーは EDT で通知されるため、通常、ハンドラーから使用する必要はありません。

于 2014-09-25T16:41:48.573 に答える