2012-11-19 37 views
1

我具有连接到数据源一个GRAL图表:如何更改数据后刷新GRAL图表?

XYPlot plot = new XYPlot(data); 
chartPanel=new InteractivePanel(plot); 
LineRenderer lines = new DefaultLineRenderer2D(); 
plot.setLineRenderer(data, lines); 
Color c1 = new Color(0.0f, 0.3f, 1.0f); 
plot.getLineRenderer(zl).setSetting(LineRenderer.COLOR, c2); 

可变“数据”通过时间和这段代码的变化之后执行的变化。如何使用新数据刷新图表?我试图重绘(),重新验证()但没有效果...

回答

-1

通常情况下,GRAL中的图表将自己注册为DataListener,因此当值被添加,更改或移除到DataSource对象时,应自动刷新显示的图。也许你已经遇到了一个错误,或者代码改变了你的数据有问题。

0

更新后data致电chartPanel.repaint()。如果它不起作用,请确保您正在更改正确的data并更新正确的chartPanel.repaint(),正如Rick已经提到的那样。

0

我不知道如果你需要任何这更多,但是这是我要做的事:

import de.erichseifert.gral.ui.InteractivePanel; 
import java.awt.Component; 
import java.awt.Graphics; 
import javax.swing.JPanel; 

public class PlotFunctions { 

    public void AddChartToPanel(InteractivePanel chart, JPanel jPanelChart) { 
     // erase panel 
     Graphics g = jPanelChart.getGraphics(); 
     g.dispose(); 

     jPanelChart.paintComponents(g); 
     jPanelChart.removeAll(); 

     // paint new chart 
     chart.setSize(jPanelChart.getWidth(), jPanelChart.getHeight()); 
     chart.setVisible(true); 
     jPanelChart.add(chart); 
     jPanelChart.validate(); 
     jPanelChart.repaint(); 
    } 


    public void Resize(JPanel jPanelChart){ 
     if (jPanelChart.getComponentCount() > 0) { 
      Component c = jPanelChart.getComponent(0); 
      c.setSize(jPanelChart.getWidth(), jPanelChart.getHeight()); 
      jPanelChart.removeAll(); 
      jPanelChart.add(c); 
     } 
    } 
} 

您使用绘制面板上使用大小功能,基本上通过删除它刷新图片从面板中重新绘制新的尺寸,这可能对您的情况有所帮助。

相关问题