Search code examples
javaswingjfreechart

Update PieChart in JFreeChart


I have created a PieChart using JFreeChart. I for the life of my cant figure out how to update the chart once it has been created. Is the only way to do that to create an entirely new chart?


Solution

  • As shown here, you can alter a chart after it's been rendered. In this case, update the chart's data model, PieDataset, and the listening view will follow; in these related examples, a component's Action updates a Dataset. In a MultiplePiePlot, you can update the appearance of the pie chart view directly, as shown here.

    Addendum: Starting from PieChartDemo1, re-factor the dataset and add a suitable Action, as shown below.

    private static final DefaultPieDataset dataset = createDataset();
    …
    public PieChartDemo1(String title) {
        super(title);
        add(createDemoPanel());
        add(new JButton(new AbstractAction("Update") {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                dataset.setValue("Apple", dataset.getValue("Apple").doubleValue() + 1);
            }
        }), BorderLayout.SOUTH);
    }
    

    enter image description here