2012-11-19 42 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); 
     } 
    } 
} 

您使用繪製面板上使用大小功能,基本上通過刪除它刷新圖片從面板中重新繪製新的尺寸,這可能對您的情況有所幫助。

相關問題