Maison >Java >javaDidacticiel >Comment puis-je éviter les erreurs aléatoires lors de la mise à jour de la série JFreeChart dans une interface graphique ?
Lors du développement d'une interface graphique qui affiche les résultats des calculs en arrière-plan, une tâche courante consiste à mettre à jour les données du graphique à mesure que de nouvelles informations deviennent disponible. En utilisant JFreeChart, cela peut être réalisé en modifiant l'ensemble de données sous-jacent. Cependant, si l'ensemble de données est modifié trop fréquemment ou de manière non synchronisée, des erreurs peuvent survenir, telles que des exceptions « Index de série hors limites » ou « Index hors limites ».
Pour résoudre ces problèmes, il est Il est recommandé de mettre à jour l'ensemble de données à partir de la méthode process() d'un SwingWorker, qui garantit la sécurité des threads. De plus, si le domaine du graphique représente le nombre d'itérations plutôt que le temps, il convient d'utiliser un NumberAxis au lieu d'un DateAxis.
Exemple :
Le le code suivant montre comment mettre à jour un graphique linéaire en temps réel à l'aide d'un SwingWorker :
private XYSeries series = new XYSeries("Result"); ... @Override protected void process(List<Double> chunks) { for (double d : chunks) { label.setText(df.format(d)); series.add(++n, d); } }
Cet extrait de code utilise une XYSeries pour stocker les points de données et met à jour la série dans la méthode process() du SwingWorker. L'étiquette est également mise à jour pour afficher la valeur actuelle.
Considérations supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!