0

我的问题很简单:

1)我有扩展JFrame的主类。
2)在那个类里面有一个JPanel,上面有一个BufferedImage。
3)最后还有一个JButton,我称之为“Fire”......这就是设计的全部......

现在这是交易:

当按下按钮时,有一个小方法会返回一个包含 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 回答