Want to refresh the Category dataset

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
ashutosh
Posts: 15
Joined: Fri Dec 08, 2006 1:43 pm

Want to refresh the Category dataset

Post by ashutosh » Mon Dec 18, 2006 2:48 pm

Hi Everyone.

I'm trying to develope a chart that will take the value for the database and display. some data is inserted in the database at some interval, so the volume of the database is increasing.

I want to show the new value in the chart which is continously changing. how can I refresh or how this chart can automaticaly get refreshed when the dataset changes.

what are the methods that I can use to do this???

my code is attached along. Please have a look and give some suggessions, where and how shall I use the DatasetChangeEvent method.


Code: Select all



[color=green]import java.awt.*;
import javax.swing.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.IntervalMarker;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.ui.RefineryUtilities;
import org.jfree.data.general.DatasetChangeListener;
import org.jfree.data.general.DatasetChangeEvent;


public class ChartProgramTest extends JFrame
{
        public String series1 = "Data";
        private JPanel jContentPane = null;
        private JButton jButton1 =null;
        private JButton jButton2 =null;
        private DefaultCategoryDataset dataset = new DefaultCategoryDataset();
        private ChartPanel chartPanel = null;
        static int max=0;

        private CategoryDataset createDataset()
        {


                // row keys...
                String category = "ABC";
                String series1 = "DATA";

                // create the dataset...
                DefaultCategoryDataset dataset = new DefaultCategoryDataset();
                Database db = new Database();
                max = db.getCount();
                dataset.addValue(max, series1, category);

                return dataset;

        }

        private JFreeChart getJFreeChart(CategoryDataset dataset)
        {
                JFreeChart chart = ChartFactory.createBarChart(
                                "Data Chart", // chart title
                                "Companies", // domain axis label
                                "Value", // range axis label
                                createDataset(), // data
                                PlotOrientation.VERTICAL, // orientation
                                true, // include legend
                                false, // tooltips?
                                false // URLs?
                                );


                chart.setBackgroundPaint(Color.white);

                // get a reference to the plot for further customisation...
                CategoryPlot plot = (CategoryPlot) chart.getCategoryPlot();

                plot.setBackgroundPaint(Color.lightGray);
                plot.setDomainGridlinePaint(Color.white);
                plot.setDomainGridlinesVisible(true);
                plot.setRangeGridlinePaint(Color.white);

                // set the range axis to display integers only...
                final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
                rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
                rangeAxis.setRange(0.0, max*1.5);

                // disable bar outlines...
                BarRenderer renderer = (BarRenderer) plot.getRenderer();
                renderer.setDrawBarOutline(true);

                BarRenderer barrenderer = (BarRenderer)plot.getRenderer();
                barrenderer.setMaximumBarWidth(0.15);

                // set up gradient paints for series...
                GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue,
                  0.0f, 0.0f, new Color(0, 0, 64));
                renderer.setSeriesPaint(0, gp0);

                return chart;
        }


        private JPanel getJContentPane()
        {

                jContentPane = new JPanel();
                jContentPane.setLayout(new FlowLayout());
                jContentPane.setPreferredSize(new Dimension(150,100));
                chartPanel = new ChartPanel(getJFreeChart(dataset));
                chartPanel.setBounds(new java.awt.Rectangle(14,33,521,300));
                chartPanel.setRefreshBuffer(true);
        
                jButton1 = new JButton("Exit");
                jButton1.setBounds(new java.awt.Rectangle(15,9,109,20));

                jButton2 = new JButton("Refresh");
                jButton2.setBounds(new java.awt.Rectangle(15,9,109,20));

                jButton1.addActionListener(new java.awt.event.ActionListener()
                {
                        public void actionPerformed(java.awt.event.ActionEvent e)
                        {
                                System.exit(0);
                        }
                });

                jButton2.addActionListener(new java.awt.event.ActionListener()
                {
                        public void actionPerformed(java.awt.event.ActionEvent e)
                        {
                                chartPanel.repaint();
                        }
                });


                jContentPane.add(chartPanel, null);
                jContentPane.add(jButton1, null);
                jContentPane.add(jButton2, null);

                return jContentPane;
        }

        private void initialize()
        {
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                this.setResizable(false);
                this.setSize(720,500);
                this.setContentPane(getJContentPane());
                this.setTitle("Bar Chart");
         }

        public static void main(String[] args) throws InterruptedException, Exception
        {
                ChartProgramTest cpgm = new ChartProgramTest();
                cpgm.initialize();
                RefineryUtilities.centerFrameOnScreen(cpgm);
                cpgm.show();

        }
}
[/color]
[code]


Please help me !!!

-Ashutosh

Locked