- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:またまたすいません、Javaについて質問です)
Javaでお絵描きソフトを作成中にResetButtonが画面に描画される問題
このQ&Aのポイント
- Javaで簡単なお絵描きソフトを作成中にResetButtonを押すと画面がクリアされるが、何故か左上にResetButtonが描画されてしまいます。なぜでしょうか?
- Javaでお絵描きソフトを作成している際、ResetButtonを押すと画面がクリアされるが、ResetButtonが何故か左上に描画されます。なぜでしょうか?
- Javaでお絵描きソフトを作成中にResetButtonを押すと画面がクリアされるが、ResetButtonが画面上に残ってしまいます。なぜでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
mp.repaint() してもJFrame自体がrepaint()しなきゃmpがrepaintされる時にサイズが無くなる瞬間にボタンが一番上に来て、残像がそこに残ります。 変えたコードが↓です。 http://pastebin.ca/2138477 で、JFrameのrepaint()を呼べば、中のJComponent達もrepaintされるのでmpのrepaintはする必要ない。 他に変えたところ: 1)場所配置にはlayout managerを使いましょう。簡単にキレイにコードがかけます。 2)ボタンを押した時にしたいものはボタン専用のactionListenerを作りましょう。質問で書かれているものだとウィンドウに最大化、リサイズしたり動かす度にJFrameのactionListenerが呼ばれて無駄です。(なので、java_test_04クラスはActionListenerをinheritしなくていい) ただ、一番の問題はウィンドウに何かアクションが起こると、ウィンドウがrepaint → mpがrepaintされるということです。絵描き用のプログラムだったらそうだと考えにくいのですが、ウィンドウに何か起こる度にキャンバスが空になるべきなんですか?書いたものをどうにかして保存しないと。
お礼
質問内容だけでなく、その他のアドバイスまで解りやすく ご回答ありがとうございます! お陰様で上手く動作しました。