1

我有一个连接到数据源的 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() 但没有效果...

4

3 回答 3

0

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

于 2013-06-21T10:07:40.110 回答
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);
        }
    }
}

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

于 2013-07-27T15:07:16.560 回答
-1

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

于 2013-04-29T17:39:37.287 回答