2013-04-28 19 views
5

私のプログラムには設定タブがあります。ここで設定できるデータは、このパネルから変更できるだけでなく、だから私は5秒ごとにこのデータをリロードしたいのです。私はこれが余分のスレッドで行われなければならないと思うが、スレッドに関する私の知識は最小限である。私はすでにこの目的のためにリロードメソッドを持っています。X秒ごとにリロードJPanel(スレッドを使用)

これを行うにはどうすればよいですか?

答えて

4

使用ScheduledExecutorService

private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 
scheduler.scheduleAtFixedRate(yourRunnable, 5, 5, SECONDS); 

はその後リロードあなたの JPanel yourRunnableで(ただのJavaDocの例に従ってください)。

0

Timerを使用すると、定期的にデータを更新できます。

5

が、スレッドについての私の知識は最小限です...

  1. あなたは絶対に一般的にスレッドを学ぶ必要がある、とJava Concurrency Tutorialは助けることができます。
  2. 次に、特にconcurrency in Swingについて学ぶ必要があります。
  3. JPanelのpaintComponent(...)メソッドで、またはおそらくはBufferedImageで、GUIのグラフィック表現を描き、paintComponent(...)の内部に表示します。
  4. SwingWorkerなどのバックグラウンドスレッドでデータをリロードします。このワーカーは、5秒ごとに新しいデータを要求して取得するsyb0rgの回答(1+〜syb0rgの回答)に従ってjava.util.TimerまたはScheduledExecutorServiceを持つことができます。
  5. その後、データが変更された後にSwingイベントスレッドからrepaint()を呼び出します。 SwingWorkerを使用している場合は、process/publishメソッドのペアがこれに役立ちます。これでデータをSwingイベントスレッドに公開することができます。
+0

あなたは私の名前を間違って綴りました:私が言及しなかったすべての有用なもののためのP +1。 – syb0rg

+1

@ syb0rg:おっと、私の悪い! –

+0

+1を5ポイントで短く提供する。 –

関連する問題