質問

各メソッド間でスレッドを使用して.fillRectメソッドの2つの呼び出しを使用して、長方形をゆっくりとペイントしようとしています。起こっているのは、長方形が初期化される前に睡眠方法が呼び出されているため、長方形がすでに塗装されているように見えることです。長方形の一部をペイントし、5秒間一時停止してから、アントオラをペイントしたいだけです。

これが私のコードです -

public void paint(Graphics g, int w, int h) {
    g.drawRect(0, 0, w - 1, h - 1);
    g.fillRect(0, 0, 10, h-1);

   try {
    Thread.sleep(5000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

    g.fillRect(0, 0, 50, h-1);
 }

ありがとう

役に立ちましたか?

解決

プラットフォームに関係なく、イベントスレッドをブロックすることは常に非常に悪い考えです。

あなたがすべきことは、あなたが塗装したい領域の現在の範囲を保存するどこかに変数を定義することです。これらの変数を別のスレッドで更新し(必要なすべてのスレッドをブロックできます)、変数を更新するたびにRepaint()メソッドを呼び出してRepaintをスケジュールします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top