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());
}
}
}