2017-03-06 4 views
0

アプリケーションをXミリ秒ごとに更新して再描画する必要があります。つまり、をカスタムメソッドとし、frame.repaint()JFrameと呼び出すスレッドを作成する必要がありますが、デッドロックやその他のマルチスレッド問題は、私が覚えている限り、Swingにコンポーネントやそのようなものを更新する独自のスレッドがあるため、このケースでは私はちょっと寂しいです。私は将来の問題をもたらすかもしれない何かをする前に少し研究しています。私はSwingUtilities.invokeLaterを使用していますので、私はそれが問題を引き起こすだろうと思います何Swingを使ったマルチスレッド:更新して再描画するスレッド?

new runnable

であるかSwingUtilitiesでこれを行うには、元の方法は何ですか?

Xミリ秒ごとにフレームを再描画するスレッドを作成しても問題ありませんか?

+3

タイマーを使用し、スレッドを実行しないでくださいでもうまく動作します) – zapl

+0

@zaplしかし、スレッドを使うのと同じタイマーではありませんか?新しいスレッド –

+0

は実際には作成されません。「スイングタイマーのタスクは、イベントディスパッチスレッドで実行されることに注意してください。 - あなたのコードが既存のUIスレッドで実行されるようにスケジュールを設定します – zapl

答えて

0

スイングタイマーでは、UI更新を呼び出すスレッドを気にする必要はありません。スレッドからhttp://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html( `invokeLater`:

How to Use Swing Timers

timer = new Timer(speed, this); 
timer.setInitialDelay(pause); 
timer.start(); 
関連する問題