2012-03-21 13 views
0

私のプロジェクトはマルチスレッドとグラフィックに基づいています。問題は、repaint()メソッドを呼び出すことです。私はrunnableを実装するクラスsecondからrepaintメソッドを呼び出そうとしており、paint()メソッドはCanvasを最初に拡張したクラスにあります。しかし、仕事を再開しないでください。 どうすればよいですか?マルチスレッドとグラフィック

のthnx

+1

問題の懸念事項について[SSCCE](http://sscce.org/)の一部が高く評価されます:-) –

答えて

0

Component.repaint()方法は、特にスイングの下で​​のみ再描画を必要とするように、コンポーネントをマークし、それは実際に直接再描画をトリガしません。

Thread.yield()を呼び出すことによって他のスレッドを実行できるようにしてください。これは、コンポーネントを実際に確認して再描画が必要なものを実際に確認するメインのグラフィックスレッド(他のスレッドを起動しました)です。

1

あなたがJComponentpaintComponent(...)メソッドをオーバーライドし、代わりにpaint(...)メソッドをオーバーライドするの、それをペイントした場合には、その代わりにCanvasを使用しての、ずっと賢明だろう。

+0

良いアドバイス; "Swingプログラムは' paint() 'をオーバーライドするのではなく' paintComponent() 'をオーバーライドする必要があります。" - [AWTとSwingのペイント:ペイントメソッド](http://java.sun.com/products/jfc/ tsc/articles/painting/index.html#callbacks)。 – trashgod

関連する問題