JFreeChart błąd rysowania funkcji

0

Witam,
kod, który umieszczę jest obsługiwany przez bibliotekę JFreeChart. Mam problem z odświeżaniem panelu rysującego wykres. Stworzyłem kod, który rysuje funkcję kwadratową dla dowolnego a, b i c. Wszystko działa, no ale. Kiedy próbuję narysować wykres ponownie łączy się tak jakby z poprzednim wykresem czyli rysuje linie proste od punktów jednego wykresu do punktów drugiego wykresu:
[IMG]http://i43.tinypic.com/9likx0.png[/IMG]
zdjęcie drugie:
[IMG]http://i41.tinypic.com/35bb3wo.png[/IMG]

A tutaj kod programu: (może się kiedyś komuś przyda)

import java.awt.Font;
import java.awt.Color;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;
import javax.swing.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class Kalkulator_Graficzny extends JFrame{
 double x = -48.5; 
 double y = 0;
 double a = 0;
 double b = 0;
 double c = 0;
 int i;
 int x_ramki;
 int y_ramki;
 String a_tekst, b_tekst, c_tekst;
 private JMenu jmenuHelp, jmenuPrzelacz;
 private JMenuItem jmenuitemAbout, jmenuitemKalkulator;
 Font f12 = new Font("Times New Roman", 0, 12);
	Font f121 = new Font("Times New Roman", 1, 12);
        XYSeriesCollection dataset = new XYSeriesCollection();
        JFreeChart chart = ChartFactory.createXYLineChart("", "\n"+"", "", dataset, PlotOrientation.VERTICAL, true, true, false);

        ChartPanel frame = new ChartPanel(chart);
        XYSeries series = new XYSeries("");
       JPanel panel_liczb = new JPanel();
       JTextField a_field = new JTextField("0");
       JTextField b_field = new JTextField("0");
       JTextField c_field = new JTextField("0");
       JLabel a_label = new JLabel("x^2");
       JLabel b_label = new JLabel(" x");
       JLabel c_label = new JLabel("+");
       JButton przycisk = new JButton("Narysuj wykres");
       JButton przycisk2 = new JButton("czysc");
       
public void Kalkulator_Graficzny() {

    
    
    
    
    

jmenuHelp = new JMenu("Pomoc");
		jmenuHelp.setFont(f121);
		jmenuHelp.setMnemonic(KeyEvent.VK_H);

		jmenuitemAbout = new JMenuItem("O kalkulatorze graficznym");
		jmenuitemAbout.setFont(f12);
		jmenuHelp.add(jmenuitemAbout);
                
                jmenuPrzelacz = new JMenu("Przełącz");
		jmenuPrzelacz.setFont(f121);
		jmenuPrzelacz.setMnemonic(KeyEvent.VK_H);

		jmenuitemKalkulator = new JMenuItem("Kalkulator");
		jmenuitemKalkulator.setFont(f12);
		jmenuPrzelacz.add(jmenuitemKalkulator);
		
		JMenuBar mb = new JMenuBar();		
		mb.add(jmenuHelp);   
                mb.add(jmenuPrzelacz);   
		setLayout(null);
                
frame.setLayout(null);
add(frame);
frame.setBounds(0,0,408,255);
panel_liczb.setLayout(null);
panel_liczb.setBackground(Color.white);
frame.add(panel_liczb);

panel_liczb.add(a_field);
panel_liczb.add(b_field);
panel_liczb.add(c_field);
panel_liczb.add(a_label);
panel_liczb.add(b_label);
panel_liczb.add(c_label);
panel_liczb.add(przycisk);

panel_liczb.setBounds(50,180,340,40);
a_field.setBounds(0,10,25,20);
b_field.setBounds(50,10,25,20);
c_field.setBounds(100,10,25,20);
///////////////////////////////////
a_label.setBounds(25,10,25,20);
b_label.setBounds(75,10,25,20);
c_label.setBounds(90,10,25,20);
przycisk.setBounds(140,5,170,30);


            
przycisk.addMouseListener(new java.awt.event.MouseAdapter() 
       {
        public void mouseClicked(java.awt.event.MouseEvent evt) 
        {
            a_tekst = a_field.getText();
            b_tekst = b_field.getText();
            c_tekst = c_field.getText();
            a = Double.parseDouble(a_tekst);
            b = Double.parseDouble(b_tekst);
            c = Double.parseDouble(c_tekst);
            
            
           
            dataset.removeAllSeries();
              
            
            for(i = 0; i<200; i++)
    {
        y = a*x*x + b*x + c;
        
        series.add(x, y);
        
        x = x + 0.5;
        
    }
            x = -48.5; 
            y = 0;
            i = 0;
            dataset.addSeries(series);
            
        }
       });


pack();
setTitle("Kalkulator");
		setSize(408, 270);
		setLocation(405, 255);
		setVisible(true);
		setResizable(true);
setJMenuBar(mb);


jmenuitemKalkulator.addMouseListener(new java.awt.event.MouseAdapter() 
       {
        public void mousePressed(java.awt.event.MouseEvent evt) 
        {
            
        }
       });


}

}

Panel dolny nachodzi na rysowanie, ale to jest wynik moich prób i na razie nie zmieniałem tego, bo to nie przeszkadza w działaniu programu.

Najgorsze jest to, że metoda dataset.removeAllSeries(); nie działa, albo ją w złym miejscu wstawiłem.

0

Musisz jeszcze wyczyścić series.

0

Wielkie dzięki. Sporo się nad tym męczyłem, próbowałem wszystkiego, a wystarczyło tylko zajrzeć do biblioteki. THX

1 użytkowników online, w tym zalogowanych: 0, gości: 1