更改数据后如何刷新GRAL图表?

时间:2012-11-19 14:48:43

标签: java charts

我有一个连接到数据源的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);

变量'数据'随时间变化,这段代码在变更后执行。如何使用新数据刷新图表?我尝试了repaint(),revalidate()但没有效果......

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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);
        }
    }
}

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

答案 2 :(得分:-1)

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