2016-01-29 74 views
0

我想動畫XYSplineRenderer的圖形。動畫應該平滑,將來我希望能夠修改速度。但目前只是一個流暢的動畫會很好。爲XYSplineRenderer的圖形制作動畫

我正在閱讀約SwingWorkerthis thread,但我真的不知道如何使用XYSeries。我應該如何在doInBackground(它表示XYSeries不可迭代)內添加series

任何例子將非常感激。

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

回答

2

始終更新Swing組件和模型,像ChartPanelXYSeries,在event dispatch thread。您的示例在後臺調用series.add(),而@ trashgod的example在後臺調用publish()。公佈的結果在process()中得到處理,其中確實在事件分派線程上運行

從此example開始,並將其更改爲如here所示,以瞭解它是如何工作的。