0

私の質問は次のように簡単です。

1)JFrameを拡張するメインクラスがあります。
2) そのクラス内には、その上に BufferedImage を持つ JPanel があります。
3) 最後に、私が「Fire」と呼んでいる JButton もあります..これで設計は完了です..

これが取り引きです:

ボタンを押すと、5 つの Ellipse2D オブジェクトの配列を返す小さなメソッドがあります。(配列は「ポイント」と呼ばれ、本質的には単純な円の配列です..)。

「Fire」を押したときにやりたいことは、これらのオブジェクトを「bf」と呼んでいる BufferedImage に表示し、アニメーションの感覚を与える方法で徐々に色で塗りつぶすことです。それを行う最も簡単な方法は何ですか?

PS swing Timer クラスを使用してみましたが、そのアプローチの問題は、配列を取得したい場合に必要なメソッド呼び出し (actionPerformed 内) にパラメーターを渡すことができないことです...

前もって感謝します

4

2 に答える 2

2

ActionListener オブジェクト (Timer に渡すオブジェクト) を作成して、アニメーションの実行に必要なデータにアクセスできるようにします。Timer は、アニメーションの次のステップに進むタイミングを ActionListener に知らせるためのものです

于 2011-02-17T16:32:10.987 に答える
0

こちらが仮の「SSCCE」…

import java.awt.; import java.awt.geom.; import javax.swing.*;

public class myApp extends JFrame{

private JPanel myPanel;
private JButton myButton;
private Ellipse2D e[];

public myApp(){
    //the objects I need to draw
    e = new Ellipse2D.Double[2];
    e[0] = new Ellipse2D.Double(50.0, 50.0, 50.0, 50.0);
    e[1] = new Ellipse2D.Double(120.0, 120.0, 50.0, 50.0);
    //--------------------------
    setSize(400,300);
    myPanel = new JPanel(new BorderLayout());
    myButton = new JButton("Fire");
    setLayout(new BorderLayout());
    this.add(myPanel, BorderLayout.SOUTH);
    this.add(myButton, BorderLayout.NORTH);
}
public static void main(String args[])  {
    myApp my = new myApp();
    my.setVisible(true);
}

}

問題は、タイマー クラスの使用方法がわからないだけでなく、アニメーションを取得できるように、タイマーが繰り返し呼び出すメソッドに何を入れればよいかもわかりません..!

于 2011-02-17T19:43:07.870 に答える