• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaのrepaint()について)

Javaのrepaint()について

このQ&Aのポイント
  • Java初心者の方がrepaint()メソッドを使用してアニメーションを実装している際に、描画した残像が残ってしまう問題が発生しています。
  • repaint()メソッドの位置を変えるとボックスが動かなくなるという別の問題も発生しています。
  • 理想的な動作としては、キー入力に対応した動作が実行され、描画した残像が残らないようにしたいです。

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

  • ベストアンサー
  • cpen
  • ベストアンサー率58% (18/31)
回答No.2

まずは、 1)レス1さんが書いたとおり、無限ループになってるのでMyCanvasのpaintメソッドからrepaint()を消す。 2)keyを押した時に、mcのrepaintがされてないので、以下のどちらかをする。  a) mcをtest04のメンバー変数にして、mc.repaint()をkeyPressed(KeyEvent e)の最後に足す。  b) mcを他の場所で必要なければ、↓を足す。 Component[] comps =getComponents(); for(Component comp:comps){ comp.repaint(); } 残像については、 MyCanvasのpaintメソッドの最初に super.paint(g)

pocket0173
質問者

お礼

無事に上手く行きました! ありがとうございます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

手元だと MyCanvas#paint で無限ループしてる (paint が repaint を呼ぶ→repaint から paint が呼ばれる→paint が repaint を呼ぶ→以下略) けどなぁ. test04#keyPressed の中で MyCanvas#repaint を呼び出す.