- ベストアンサー
お絵描きアプレットについて
最近Javaの勉強を始めた初心者です。 本に従い、お絵描きアプレットを作って(と言いますか、ほとんど物真似ですが) ブラウザで確認しましたところ、ブラウザの別窓に移ってからお絵描きアプレットに戻ると、 それまでに描いていた絵がリセットされて、全て消えてしまいます。 別窓に移っても、それまで描いていた絵がそのまま残るためには、どのようなプログラムが 必要でしょうか? 説明が面倒なようでしたらヒントだけでもかまいませんので、ぜひ対処法をお教え下さい。 作成したプログラムが必要でしたら載せたいと思います。 どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 だいぶ日がたってしまいましたが。 問題解決策としては、そのエラーがでてくるのは、repaintメソッドを書く位置が間違っているからだと思います。具体的に言うと、 public init(){ } public start() { } public paint() { } public reapint() [ } が正解です。もっと簡単に言うと、repaint()メソッドをpaint()メソッドの最後の } のすぐ下に書き直してもらえると問題解決できるはずです。 ちょっと難しい話になるんですが、メソッドの定義がクラスの外に書かれていたり、他のメソッドの中に書かれているのは、エラーになります。 public repain() { ここに処理の内容を書く } 上記がrepaint()メソッドの定義で public paint(Graphics g) { repaint(); } 上記がrepaint()メソッドの呼び出しです。 メソッドの定義でどのような処理をするかを定義した後に、paintメソッドの中で,repaint()メソッドを呼び出して、処理をお願いするのです。 最初のうちは何がなんだか判らないと思いますが、頑張って下さい。 返事が遅れてすみませんでした。では。
その他の回答 (1)
- kamkamkam3
- ベストアンサー率42% (216/514)
paint()メソッドはプログラムの中に書かれてますか? アプレットのpaint()メソッドは、アプレットを再描画しなくてはいけない時、自動的に実行されます。 再描画しなくてはいけない時とは、別窓に隠れていた後に、最前面に表示する時です。パソコンでは、隠れていた画面を最前面に持ってくる度に、書き直しているのです。Javaアップレットで、その作業を自動的にやってくれるのが、paint()メソッドです。 では、頑張ってください。 以下のサイトに詳しいアップレットの作り方が記述されてます。 repaint()とupdate()メソッドをマスターすれば、画像表示に困る事はありません。
お礼
アドバイスをいただき、ありがとうございます! paint()メソッドについて勉強させていただき、またぜひサイトの方も 参考にさせていただきます。 javaの本はなかなか難しいのですが、kamkamkam3さんのサイトはとてもわかりやすいので じっくり拝見させていただきます。 もしなかなかうまくいかないときは、すみませんがまた質問させていただきますので よろしければまたよろしくお願いいたします。
補足
アドバイスを参考にさせていただき、勉強してプログラムをいじったところ 無事、別窓に移った後、画像データが消えることはなくなりました。 どうもありがとうございました! ただまた問題が発生しまして、今度は描いた絵が、クリアボタンを押しても 消えなくなってしまいました(苦笑) コンパイルするときに、 drawtest.java:180: staticでないメソッド repaint() を static コンテキストから参照することはできません とエラー表示されるのですが、どういう意味でしょう? もしよろしければ、またアドバイスいただけると大変嬉しいのですが、 急いではおりませんのでお時間が有りますときにでもお願いできましたら とても助かります。 こちらも引き続き勉強してみたいと思います。 すみませんが、どうぞよろしくお願いいたします。