質問: ペイントソフトにバケツ塗り機能をつけたいと思っています。 どのようにしたら実装できるのか?ということで、私は以下のほうにできればできるんじゃないかと考えています。 クリックされた座標(x,y)を含む部分を塗りつぶしたい。 まず(x,y)の色を取得。 set_color Paint関数で、g(Graphics),x,y,set_color,fill(塗りつぶしたい色)を引数に自作のfills関数を呼び出し。 以下fills関数。 (x,y)の色がset_colorと同じかどうか比較。 同じだったら、その座標を塗りつぶす。 (x,y)の四方八方の座標を新たな座標の引数にしてfills関数を呼び出す。 再帰 異なっていたら、returnする。 この考えを実装させるために、アプレット画面の任意の座標の色を取得する方法が知りたいと思っています。 そもそもその方法があるのか?の前に、この方法でうまくいくのか?重くなったりするのだろうか?とも思っています。 描画のほうはすべてPaint関数内で行っています。 描画に使える色は、赤・オレンジ・黄色などの虹色を含む11色です。 塗りつぶしができるようにしたい範囲については、〜色で囲まれた範囲ではなく、画面の範囲あるいは何かしらの線で囲まれている範囲にしたいと思っています。
回答: mouseDraggedの最後でrepaint();を呼んだら前みたいにできました。 任意の位置でrepaint();を呼ぶまでは、処理が終わる(ドラッグが終わる)まではrepaint();が呼ばれないからあのようなことが起こったのですね。