2011-03-14 7 views
1

私はアニメーションを行う小さなアプレットを実装しようとしています。 JPanelとそのアニメーションJPanelの下でアニメーションを行い、再生/一時停止し、アニメーションを制御するためのボタンをスキップしたいと思います。これを正しく行うには、アニメーションをスレッドに入れる必要があると思います。 (正しい?)スイングとスレッドを使ったJAppletアニメーションのデザイン

私の質問は次のとおりです。このアプリケーションのクラスを整理するにはどうすればよいですか?私のアニメーションスレッドをJPanelの中​​で動かすには?まさにここだ、これが役立つ場合、私は知らないが、:

私はoracle.comにチュートリアルで見てきたし、これは私がこれまで持っているものです...

Class AnimationApplet extends JApplet { 

... 

    public void init(){ 
     try { 
      SwingUtilities.invokeAndWait(new Runnable() { 
       public void run() { 
        createGUI(); 
       } 
      }); 
      } catch (InterruptedException ex) { 
       Logger.getLogger(TabApplet.class.getName()).log(Level.SEVERE, null, ex); 
      } catch (InvocationTargetException ex) { 
       Logger.getLogger(TabApplet.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
    } 

    private void createGUI() { 
     AnimationPanel ac = new AnimationPanel(); 
     this.setConentPane(ac); 
    } 

} // Class AnimationApplet 

class AnimationPanel extends JPanel implements ActionListener { 
    ... 
} 

編集を私はやろうとしている。私はギター・タブ・プレイヤーを作成していますので、ノートを画面全体にスライドさせてから、特定のポイント(16分音符)でスライドさせて、アニメーションするノートがあるかどうか確認してください。 1分あたりの拍数でmsを分けることができないため、これは難しいようです。今のところ、私はそれを4つまたは5つの速度(最も遅い、遅い、中程度のものなど)に分けることを考えています。

おかげで、

ネイト

+0

スイングとアニメーションタグが追加されました –

答えて

2

いいえ、あなたは、単に(これは舞台裏スレッディング使用していることを理解するのに)アニメーションを駆動するためにスイングタイマーを使用することができますので、直接スレッドを使用する必要はありません。あなたのやっているように私のアニメーションコンポーネントがJPanelを拡張し、paintComponentメソッドを描画するようにします。私はあなたが上記のように1つのクラスを過度に行うようになっているので、GUIクラスまたはビュークラスをリスナクラスを拡張することを避けます。私は、匿名の内部リスナー、またはプライベート内部クラスリスナーを使用するか、複雑な独立したスタンドアロンのリスナークラスを使用します。

もう1つの注意点 - paintComponentメソッドがペイントとペイントのみを行い、プログラムロジックがなく、このメソッド内からクラスを作成したりイメージを読み込んだりしないようにしてください。それは、細身で速いことが必要です。

+1

最近、paint()/ paintComponent()をオーバーライドすると、JPanelはJComponent以外の機能を提供しなくなりました。 –

+0

Andrewの情報をありがとう、しかし、あなたはそれを詳述できますか? paintComponentがオーバーライドされ、super.paintComponentが内部から呼び出されたときに特に失われる機能は何ですか? JPanelのデフォルトは依然としてtrueですが、JPanelは通常のように背景を塗りつぶし、不透明です(Rob Camickは必要なときにどこにありますか?)。 –

+0

スイングとアニメーションのタグを追加して、Robの注目を集めることにします。 ;) –

1

アニメーションの場合はjavax.swing.Timerが好きです。ここには簡単なapplet exampleがあります。

関連する問題