こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

paintメソッドについて

repaintメソッドはpaintをすぐに呼び出すのではなく、イベントが終了するまで再描画されないと聞きました。そこで、イベント中でもpaintを即座に呼び出せるメソッドはないでしょうか?
どなたかご回答お願いします。

投稿日時 - 2012-07-20 23:27:25

QNo.7601655

困ってます

質問者が選んだベストアンサー

あります。 paintImmediately というメソッドが用意されています。
http://wisdom.sakura.ne.jp/system/java/swing/swing7.html

投稿日時 - 2012-07-21 12:42:19

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

>イベント中でもpaintを即座に呼び出せるメソッドはないでしょうか?

ありません。そもそも、画面表示はプログラマの都合で瞬時に行えるような仕様にはなっていないのです。表示を更新するのに必要な条件がクリアされ描画できるという段階になって初めて更新が行える、だからこそpaintがすぐさま呼び出せないように作ってあるわけです。

画面の再描画は、通常、イベントキューに更新処理が追加されます。このキューにスタックされた処理が順に行われていき、登録された再描画の順番が来て初めて更新処理がされるようになっています。ですから何かのmethodなどの処理を実行中でイベントキューにスタックされたイベントの処理が停止された状態ではどうしようもありません。

通常、このような際には、Thread.sleepなどでメインスレッドに待ち時間を与えてやるなどしてスタックされたキューが処理できる猶予を与えます。またアニメーションのような処理ならば、別スレッドを立てて実行してやるのが基本です。

投稿日時 - 2012-07-21 10:28:38

あなたにオススメの質問