class GraphGenerator1 extends JPanel { ChartPanel chartPanel, sbc; void generator(int t, int Value1, int Value2) { if (t == 1) { DefaultCategoryDataset gData = new DefaultCategoryDataset(); gData.setValue(Value1, "What you saved", ""); gData.setValue(Value2, "What you paid", ""); JFreeChart chart = ChartFactory.createBarChart("", "", "", gData, PlotOrientation.VERTICAL, false, false, false); chart.setBackgroundPaint(Color.WHITE); BarRenderer br = (BarRenderer) chart.getCategoryPlot() .getRenderer(); br.setBarPainter(new StandardBarPainter()); br.setSeriesPaint(0, Color.decode("#97d95c")); br.setSeriesPaint(1, Color.decode("#437346")); chart.getCategoryPlot().setBackgroundPaint(new Color(0, 0, 0, 0)); br.setMaximumBarWidth(0.25); chart.getCategoryPlot().setDomainGridlinesVisible(false); chart.getCategoryPlot().setRangeGridlinesVisible(false); chart.getCategoryPlot().getDomainAxis().setTickLabelsVisible(false); // chart.getCategoryPlot().clearDomainMarkers(); chart.getCategoryPlot().getRangeAxis().setAxisLineVisible(false); chart.getCategoryPlot().getRangeAxis().setTickMarksVisible(false); chartPanel = new ChartPanel(chart); this.setLayout(new BorderLayout()); this.add(chartPanel, BorderLayout.CENTER); this.setOpaque(true); } } } class Window extends JFrame implements MouseListener { GraphGenerator1 x; JButton j; Window() { x = new GraphGenerator1(); x.generator(1, 56, 20); j = new JButton("CLICK ME"); this.setLayout(new BorderLayout()); this.add(x, BorderLayout.CENTER); this.add(j, BorderLayout.SOUTH); j.addMouseListener(this); this.setVisible(true); this.setExtendedState(MAXIMIZED_BOTH); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseClicked(MouseEvent e) { String a = (String) JOptionPane.showInputDialog(rootPane, "ENTER FIRST VALUE", "", JOptionPane.PLAIN_MESSAGE); String b = (String) JOptionPane.showInputDialog(rootPane, "ENTER SECOND VALUE", "", JOptionPane.PLAIN_MESSAGE); int aa = Integer.parseInt(a); int bb = Integer.parseInt(b); x.generator(1, aa, bb); x.chartPanel.revalidate(); x.chartPanel.repaint(); // I DONT KNOW IT DOESNT UPDATE// } public static void main(String args[]) { new Window(); } }
I have a bar chart which I want to update and I tried the revalidate and repaint methods but with no success. I have even added chartPanel.addMouseListener(this). I dont know where am I going wrong or where I should be adding something. I have intentionally added mouseListener to Jbutton because in my original program I am using values in a JButton to invoke change in graphs.