为XYSplineRenderer

时间:2016-01-29 18:46:04

标签: java animation jfreechart

我想为XYSplineRenderer的绘图添加动画效果。动画应该是平滑的,将来我希望能够修改速度。但目前只需一个平滑的动画即可。

我正在阅读SwingWorkerthis thread,但我真的无法弄清楚如何使用XYSeries。我应该如何在series内向doInBackground添加点数(它表示XYSeries不可迭代)?

任何一个例子都会非常感激。

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        public void run() {
            GUI t = new GUI();
            t.runCalc();
        }
    });
}


public void runCalc() {
    TwoWorker task = new TwoWorker();
    task.addPropertyChangeListener(new PropertyChangeListener() {
    });
    task.execute();
}

// UNDER CONSTRUCTION !!!
private class TwoWorker extends SwingWorker<Double, Double> 
{
    @Override
    protected XYSeries doInBackground() throws Exception
    {       
        for (int i = 0; i < solution.size(); i++) 
        {
            series.add(solution.point(i).lat(),solution.point(i).lon());
            Thread.sleep(1000);
        }
        return XYSeries;
    }
}

P.S。 solution只是由纬度和经度定义的点的集合。基于这一点,构建了XYSplineRenderer

1 个答案:

答案 0 :(得分:2)

始终event dispatch thread上更新Swing组件和模型,例如ChartPanelXYSeries。您的示例在后台调用series.add(),而@ trashgod的example在后台调用publish()。已发布的结果将在process()中处理, 在事件派发线程上运行。

从这个example开始,然后像显示here一样进行更改,看看它是如何运作的。