2016-09-08 24 views
2

javax.swing.timerのアニメーションを作成しても正常に動作しているようです。"javax.swing.timer"を停止してもアニメーションが一時停止しない

しかし、アニメーションは永遠に進行しているので、timer.stop()メソッドを追加することにしました。私は円は(350、200)の位置に達したときに停止するアニメーションを期待してい

public void paintComponent(Graphics g) { 

    super.paintComponent(g); 

    g.setColor(Color.RED); 
    g.fillOval(xGrid, 200, 50, 50); 

    t.start(); 
} 

public void actionPerformed(ActionEvent event) { 

    if (xGrid >= 350) { 

     t.stop(); 
    } 

    xGrid++; 
    repaint(); 
} 

は、ここでは、コードの小片です。

しかし、そうではありません。私がプログラムを実行すると、以前と同じように出力され、アニメーションは少し遅くなります。

これは非常に混乱しています。だれでも助けてくれますか?

すべてのヘルプは途方もなくあなたのactionPerformed()実施スケジュールでrepaint()への呼び出しpaintComponent()に後で呼び出し、

+3

実行可能な例を提供してください([SSCCE](http://sscce.org))ので、私たちはあなたの行動を再現することができます。 –

+2

なぜ 'paintComponent()'で 'start()'を呼びますか? – trashgod

答えて

3

を理解されるだろうが、paintComponent()の実装は、Timerstart()を呼び出します。これにより、Timerを実行し続ける無限ループが作成されます。少なくともへの電話をpaintComponent()から削除してください。

+1

具体的なガイダンスについては、質問を編集して、修正されたアプローチを示す[mcve]を含めてください。 – trashgod

+1

助けてくれてありがとう!はい、プログラムは正しく実行されています。私は本当にyoutube上の任意のチュートリアルを信頼する必要はありません:) – Kcits

関連する問題