バックグラウンド計算の結果を表示する GUI を開発する場合、一般的なタスクは、新しい情報が追加されるとグラフのデータを更新することです。利用可能。 JFreeChart を使用すると、基礎となるデータセットを変更することでこれを実現できます。ただし、データセットが頻繁に変更されたり、非同期で変更されたりすると、「シリーズ インデックスが範囲外」または「インデックスが範囲外」例外などのエラーが発生する可能性があります。
これらの問題を解決するには、次の手順を実行します。 SwingWorker の process() メソッドからデータセットを更新することをお勧めします。これにより、スレッドの安全性が確保されます。さらに、グラフのドメインが時間ではなく反復回数を表す場合は、DateAxis の代わりに NumberAxis を使用することが適切です。
例:
次のコードは、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); } }
このコードスニペットは XYSeries を使用してデータ ポイントを保存し、SwingWorker の process() メソッドでシリーズを更新します。ラベルも更新され、現在の値が表示されます。
追加の考慮事項:
以上がGUI で JFreeChart シリーズを更新する際のランダム エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。