Re: Event-Dispatch Thread で Swing オブジェクトを作成する必要があります。
私はアプリケーションに取り組んでいます。その目的は、さまざまなリモート組み込みサーバーの状態を監視および表示することです。私は Java の初心者であり、Swing オブジェクトと EDT に関する要件の理解は不完全です。
メイン GUI は、次のように通常の方法で EDT で開始されます。
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
次に、ユーザは、リモート マシンのいずれかに対応する 1 つまたは複数のメニュー オプションを選択することができます。これの効果は、次のように毎回新しいスレッドを作成することです
new Thread(new VoterStatus(itemNumber)).start();
これにより、VoterStatus のクラス「run」メソッドが呼び出され、JFrame で新しいウィンドウが作成されます。VoterStatus クラスのインスタンスである新しいスレッドは、指定された特定のリモート (itemNumber) に問い合わせ (TCP など) を行い、さまざまな情報を収集して JFrame に表示します。
VoterStatus のインスタンスに対応するこのようなスレッドはいくつでも存在し、すべてが独自のウィンドウを更新します。これらのさまざまなウィンドウ/JFrame/タスク間でデータが共有されることはありません。
これは問題なく動作しているように見えますが、安全ですか?
EDT での Swing コンポーネントの作成に関する規則に違反しましたか?
SwingWorker クラスの使用は有益でしょうか?
このような問題に詳しい Java プログラマーからのコメントをお待ちしています。
ありがとうスティーブ