0

画像付きの JLabel をJPanel単一のスレッドで移動しようとしています。

private void moveBaloon(JLabel Baloon){
    for (int i = 0; i < 10; i++) {
        try {
            Thread.sleep(500);
        } catch (InterruptedException ex) {
            Logger.getLogger(Bowandarrow.class.getName()).log(Level.SEVERE, null, ex);
        }
        Point point= Baloon.getLocation();
        Baloon.setLocation(point.x, point.y-4);

    }
}

5 秒後、バルーンは別の位置に移動しますが、視覚的には動いていません。そのためにはどうすればよいですか?

4

1 に答える 1

0

EDT をスリープ状態にしています。つまり、アニメーション全体が完了するまで、GUI はそれ自体を再描画できません。

代わりに、スイング タイマーを使用して 500 ミリ秒ごとにイベントを発生させ、ラベルを移動する必要があります。詳細については、タイマーの使用方法に関する Swing チュートリアルのセクションを参照してください。

また、フォーラムを検索して多くの例を見つけることもできます。「アニメーション」「タイマー」はおそらく良いキーワードでしょう。

于 2013-03-22T19:49:33.337 に答える