スケジュール データベース ポーリングを必要とする Java のシステム トレイ UI があります。新しいスレッドを生成して UI に通知するための最良の方法は何ですか?
私はSwingが初めてで、スレッドモデルです。
スケジュール データベース ポーリングを必要とする Java のシステム トレイ UI があります。新しいスレッドを生成して UI に通知するための最良の方法は何ですか?
私はSwingが初めてで、スレッドモデルです。
SwingWorker
これを行うために設計された正確なものです。
GUI をブロックしないタスクを実行し、値を返し、完了時に GUI を更新することができます。
Java には、 の使用方法に関する優れたチュートリアルSwingWorker
があります。
基本的にはメソッド内でデータベースのプルを行いますdoInBackground()
。そして、done()
メソッドで GUI を更新します。
jinguyが言ったように、SwingWorkerはあなたが最初に見る場所でなければなりません。 ウィキペディアには、あらゆる場所で、JavaDocsに取り組む前に見ておくとよい興味深い例がいくつかあります。
jjnguy が述べたように、SwingWorker はここで複雑さを抽象化するのに役立ちますが、基本的には新しいスレッドで作業を行い、メソッドが戻ってきたら、swing スレッドで GUI を更新する必要があります。SwingWorker を使用していない場合、基になるメソッドは SwingUtilities (または EventQueue) .invokeLater(Runnable) です。
Swing キュー以外で Swing 関連 (モデルを含む) を更新しないでください。予期しないことが起こります。また、キューへの参照を保持してそれを使用しようとしないでください。キューは一時停止されて置き換えられるためです (たとえば、モデル ダイアログ ボックスを開いた場合)。