想要不断更新jfreechat xylinechart

时间:2014-08-11 06:10:35

标签: java swing jfreechart

我在netbeans swing中使用jfreechart创建了xyline图表。

我有两个文件,一个用于连续获取x和y坐标的值,另一个用于显示它们现在我从显示文件的构造函数创建图表,它使用硬编码值显示图表但是当我通过时我传入的图表没有相应更新。

请在下面找到显示文件的代码:

public Display_Unit_Mod() {

JPanel jPanel1 = createChartPanel();

}

public JPanel createChartPanel() {
    String chartTitle = "";
    String xAxisLabel = "x_value";
    String yAxisLabel = "y_value";
    XYDataset dataset = createDataset();

    JFreeChart chart = ChartFactory.createXYLineChart(chartTitle, 
            xAxisLabel, yAxisLabel, dataset);


    customizeChart(chart);


    return new ChartPanel(chart);
}

public XYDataset createDataset() {
    XYSeriesCollection dataset = new XYSeriesCollection();
    XYSeries series1 = new XYSeries("");


    System.out.println(String.valueOf(test.x_value));
      System.out.println(String.valueOf(test.y_value));

            series1.add(test.x_value,test.y_value); ->test is the object of other file and using it I am taking values from there
            //series1.add(7.0,8.0);
            //series1.add(3.0,4.0); -> displays values and prints chart
            //series1.add(1.0,2.0);


    dataset.addSeries(series1);

    return dataset;
}

private void customizeChart(JFreeChart chart) {
    XYPlot plot = chart.getXYPlot();
    XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();

    // sets paint color for each series
    renderer.setSeriesPaint(0, Color.RED);

    // sets thickness for series (using strokes)
    renderer.setSeriesStroke(0, new BasicStroke(4.0f));
    renderer.setSeriesStroke(1, new BasicStroke(3.0f));
    renderer.setSeriesStroke(2, new BasicStroke(2.0f));

    // sets paint color for plot outlines
    plot.setOutlinePaint(Color.BLUE);
    plot.setOutlineStroke(new BasicStroke(2.0f));

    // sets renderer for lines
    plot.setRenderer(renderer);

    // sets plot background
    plot.setBackgroundPaint(Color.DARK_GRAY);

    // sets paint color for the grid lines
    plot.setRangeGridlinesVisible(true);
    plot.setRangeGridlinePaint(Color.BLACK);

    plot.setDomainGridlinesVisible(true);
    plot.setDomainGridlinePaint(Color.BLACK);

    }

我可以看到system.out.println发布的值,但没有反映在UI上。

请帮我更新一下。

1 个答案:

答案 0 :(得分:4)

使用SwingWorker在后台检索您的数据值,如图here所示。在process()的实施中更新图表的数据集,如图here所示。此听力图表将自行更新。使用SwingTimer的相关示例为here