いつもながら、JPanelのサブクラスにしたものにpaintComponent(Graphics g)をオーバーライドして、
repaintでアニメーションしようと思ったのですが、なぜか再描写されない。
構造的には、アプレットのinit()でスレッドを作成して、一定期間でクロックっぽいメソッドを呼び出すというものなのですが。
どこかで重たい処理してるのかなと思っても見当たらない。
paintImmediatelyという最終兵器を使ったのですが、それでも再描写されない。
裏で2つSocketの入出力用スレッド動かしているせいかなと思ったのですが、それ外してテストするのも面倒。
しかもなんか、他の変数と同期取れてないというか。
(そのJPanelのサブクラス内に独自に定義したメソッドで、色々な処理をしてて、変数の内容かえたりしてるけど、
paintComponentメソッド内で、その変更を加えた変数の内容を表示したところ、中の変数の値が変わっていない。
でも外のメソッドで確認すると、値はちゃんと変わってる。)
結局、paintComponent(Graphics g)があるJPanelのサブクラス自体にRunnableつけてスレッド化したら、うまくいくようになった。
原因不明。2時間以上格闘してた。動けばいいんですよ動けば…。
追記
原因分かりました。
メインクラスを誤って2つ作ってた!
コメント