【问题标题】:Filling up (gradually) ellispe2D objects with color - Java animation用颜色填充(逐渐)ellispe2D 对象 - Java 动画
【发布时间】:2011-02-17 16:15:04
【问题描述】:

我的问题很简单:

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

现在是这样:

当按下按钮时,有一个小方法可以返回一个包含 5 个 Ellipse2D 对象的数组。 (该数组称为“点”,本质上是一个简单的圆数组..)。

当按下“Fire”时,我想要做的就是让这些对象显示在我称之为“bf”的 BufferedImage 上,并逐渐让它们以一种可以产生动画感的方式填充颜色。最简单的方法是什么?

附:我曾尝试使用 swing Timer 类,但该方法的问题是我无法将参数传递给方法调用(在 actionPerformed 内部),如果我想通过我的数组...

提前谢谢你

【问题讨论】:

  • 考虑创建并发布SSCCE(请点击链接),这是一个可编译、可运行的小型程序,展示了您解决此问题的最佳尝试。然后我们可以检查您的代码、运行它、修改它并最好地帮助您修复它。

标签: java animation timer shape


【解决方案1】:

构造您的 ActionListener 对象(您传递给 Timer 的对象),以便它可以访问执行动画所需的数据。计时器只是让 ActionListener 何时在动画中执行下一步。

【讨论】:

    【解决方案2】:

    这是一个临时的“SSCCE”...

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

    公共类 myApp 扩展 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);
    }
    

    }

    问题不仅是我不知道如何使用计时器类,而且我也不知道在计时器将重复调用的方法中放入什么,以便我可以获得动画..!

    【讨论】:

      猜你喜欢
      • 2016-06-25
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多