我想为XYSplineRenderer
的绘图添加动画效果。动画应该是平滑的,将来我希望能够修改速度。但目前只需一个平滑的动画即可。
我正在阅读SwingWorker
和this 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
。
答案 0 :(得分:2)
始终在event dispatch thread上更新Swing组件和模型,例如ChartPanel
和XYSeries
。您的示例在后台调用series.add()
,而@ trashgod的example在后台调用publish()
。已发布的结果将在process()
中处理, 在事件派发线程上运行。