3

スケジュール データベース ポーリングを必要とする Java のシステム トレイ UI があります。新しいスレッドを生成して UI に通知するための最良の方法は何ですか?

私はSwingが初めてで、スレッドモデルです。

4

3 に答える 3

6

SwingWorkerこれを行うために設計された正確なものです。

GUI をブロックしないタスクを実行し、値を返し、完了時に GUI を更新することができます。

Java には、 の使用方法に関する優れたチュートリアルSwingWorkerがあります。

基本的にはメソッド内でデータベースのプルを行いますdoInBackground()。そして、done()メソッドで GUI を更新します。

于 2009-07-28T18:52:25.227 に答える
5

jinguyが言ったように、SwingWorkerはあなたが最初に見る場所でなければなりません。 ウィキペディアには、あらゆる場所で、JavaDocsに取り組む前に見ておくとよい興味深い例がいくつかあります。

于 2009-07-28T18:56:18.947 に答える
2

jjnguy が述べたように、SwingWorker はここで複雑さを抽象化するのに役立ちますが、基本的には新しいスレッドで作業を行い、メソッドが戻ってきたら、swing スレッドで GUI を更新する必要があります。SwingWorker を使用していない場合、基になるメソッドは SwingUtilities (または EventQueue) .invokeLater(Runnable) です。

Swing キュー以外で Swing 関連 (モデルを含む) を更新しないでください。予期しないことが起こります。また、キューへの参照を保持してそれを使用しようとしないでください。キューは一時停止されて置き換えられるためです (たとえば、モデル ダイアログ ボックスを開いた場合)。

于 2009-07-28T19:03:31.087 に答える