Actualisation / Rafraichissement courbe JFreeChart

yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 14 mai 2012 à 10:55
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013 - 25 mai 2012 à 15:26
Bonjour,

j'utilise JFreeChart pour tracer des courbes(nuages de points).

Je voudrai grâce à 2 curseurs pouvoir supprimer de mon graphique les premières valeurs et les dernières valeurs de mon graphique.

Prenons le premier curseur. J'aimerai qu'au fur et à mesure que je le déplace les valeurs du début disparaissent ou apparaissent sur mon graphique en fonction du sens de déplacement.

Pour faire ceci, je pense que j'ai besoin de rafraichir (ou d'actualiser) le graphique à chaque action sur le curseur mais je ne sais pas qu'elle méthode permet de faire cela.

Savez-vous comment faire cela ?

J'ai déjà les écouteurs qui me permettent de récupérer les valeurs des curseurs dès que je les bouge.

2 réponses

yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
15 mai 2012 à 14:10
Personne ne sait comment actualiser un graphique JFreeChart ?
0
yannOpenGL Messages postés 141 Date d'inscription samedi 4 février 2012 Statut Membre Dernière intervention 3 avril 2013
25 mai 2012 à 15:26
J'imagine que je n'ai pas été très clair.
Je vais donc mettre mon code.

Je n'ai mis que la méthode d'un des deux slides pour éviter de surcharger le code.
Ce que je veux faire marche très bien dans frameGeo, la fenêtre s'ouvre et se ferme pour mettre le graphique à jour.
Mon problème est que j'aimerai faire ça dans le chartPanel alors que pour le moment le graphique s'affiche une fois et ne mets pas à jour quand je bouge les curseurs.

Peut-être qu'avec le code quelqu'un pourra me dire.

Voici mon code :
public class ResultatView3 extends JFrame implements ActionListener, ChangeListener {

private JPanel panel1 = new JPanel();
private ChartPanel chartPanel1;
private JSlider slide = new JSlider(JSlider.HORIZONTAL);
private JSlider slide2 = new JSlider(JSlider.HORIZONTAL);

   private ChartFrame frameGeo;
   private JFreeChart chartGeo;

   private int minimumSize = 13;
   private int maximumSize = 13*1000;

   private int valeur2 = 0;
   private int valeur4 = 100;

   public ResultatView3(){
super();

this.setTitle("Résultats");
        this.setSize(1400, 800);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setLocationRelativeTo(null);

        this.getContentPane().setLayout(null);

        panel1.setBounds(50, 50, 250, 100);
        panel1.setBorder(BorderFactory.createTitledBorder("Suppression de points"));
        this.getContentPane().add(panel1);

        slide.setValue(0);
slide2.setValue(100);
        panel1.add(slide);
panel1.add(slide2);
slide.addChangeListener(this);			  
slide2.addChangeListener(this);

       affichageChartPanel(minimumSize, maximumSize, JComboBox1.getSelectedItem().toString());
    }

    public void affichageChartPanel(int minSize, int maxSize, String donnee){

chart = affichageGraphe(minSize, maxSize, donnee);	 

chartPanel1 = new ChartPanel(chart, false);
chartPanel1.setBounds(700,20,650,400);
chartPanel1.setBorder(BorderFactory.createTitledBorder("Graphe"));
this.getContentPane().add(chartPanel1);
    }

    public JFreeChart affichageGraphe(int minimumSize, int maximumSize, String donnee){

    XYSeries seriesGeo = new XYSeries("Géolocalisation");
    
    for (int i=minimumSize ; i<maximumSize ; i+=19)
    {
double val1 = Double.parseDouble(bufferLecture[i]);
double val2= Double.parseDouble(bufferLecture[i+1]);	
seriesGeo4.add(val1 , val2);
    }
    XYDataset xyDatasetGeo = new XYSeriesCollection(seriesGeo);

    chartGeo = ChartFactory.createScatterPlot
("XYLine Chart using JFreeChart", "Différentes mesures", "Unité",
xyDatasetGeo, PlotOrientation.VERTICAL, true, true, false);

    frameGeo=new ChartFrame("XYLine Chart",chartGeo);
    frameGeo.setSize(700,500);	
    frameGeo.setLocation(700,0);
    frameGeo.setVisible(true);

    return chartGeo;
    }

    public void stateChanged(ChangeEvent ev){
        
if(ev.getSource() == slide) 
        {
         frameGeo.setVisible(false);
         int valeur1 = slide.getValue();
         minimumSize += (valeur1 - valeur2)*19;
         valeur2 = valeur1;
         affichageChartPanel(minimumSize, maximumSize, JComboBox1.getSelectedItem().toString());
        }
    }

}
0
Rejoignez-nous