2014-05-14 4 views
0

J'ai histogramme de classe et j'aimerais mettre à jour ses vaules au fil du temps. Pourriez-vous me dire comment le faire avec minuterie? : P J'ai juste 4 bacs tout le temps. Additionaly j'ai thread dans lequel je change Calculation.n au fil du temps est-il possible de verrouiller thread jusqu'à ce que l'histogramme est mis à jour? Bien que je n'ai pas besoin de le faire sur minuterie, je veux juste que chaque fois que "n" change son histogramme de valeur à mettre à jour.Histogramme dynamique JFreeChart

public class Histogram extends JPanel { 

/** 
* 
*/ 
private static final long serialVersionUID = 8582587439869049160L; 



public Histogram() { 
    // TODO Auto-generated constructor stub 
    setVisible(true); 
    final HistogramDataset dataSet = new HistogramDataset(); 
    final double particles[] = {Calculation.n,Calculation.n1,Calculation.n2,Calculation.n3}; 
    dataSet.addSeries("How many particles passed", particles, 4); 

    Timer timer = new Timer(250, null); 
    timer.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 

      } 
     }); 
    timer.start(); 


    JFreeChart histogram =ChartFactory.createHistogram(
      "Histogram", 
      null, 
      null, 
      dataSet, 
      PlotOrientation.VERTICAL, 
      true, 
      true, 
      false); 
    ChartPanel chartPanel = new ChartPanel(histogram); 
    add(chartPanel); 
    revalidate(); 


} 

Répondre

1

Une implémentation de jeu de données alternative est incluse dans JFreeChart: SimpleHistogramDataset. Celui-ci vous permet de continuer à ajouter de nouvelles valeurs (via les méthodes addObservation()/addObservations()).

1

Je ne pense pas que ce soit possible sans mettre en œuvre votre propre version de HistogramDataset, comme alors histogramme est évalué lors d'un jeu de données est ajouté.

Si vous implémentez votre propre version de HistogramDataset, basez votre code sur HistogramDataset #addSeries et n'oubliez pas d'appeler le fireDatasetChanged() à la fin.

+0

Tbh Je ne sais pas comment faire ça. Alors peut-être ajouter des séries et les supprimer chaque changement d'état? – FilOle

+0

Je n'ai pas pu définir une suppression/suppression de séries non plus – GrahamA