ホームページ >Java >&#&チュートリアル >JFreeChart シリーズをバックグラウンド スレッドから安全に更新するにはどうすればよいですか?
JFreeChart でシリーズを変更中に予期しないエラーが発生しました
問題:
JFreeChart を動的に更新しようとしましたプロットでは、ユーザーが「シリーズ インデックスが範囲外」および「インデックスが範囲外」に遭遇しました。バックグラウンド スレッド内でデータセットを変更しようとすると例外が発生します。
根本原因:
問題は、データセットがスレッドではないバックグラウンド スレッドから直接変更されていたことです。 -safe 操作。
解決策:
スレッドセーフな更新を保証するには、ユーザーはスイングワーカー。このクラスは、イベント ディスパッチ スレッド (EDT) で呼び出される process() メソッドでデータセットを更新することにより、バックグラウンド スレッドから GUI を更新する安全な方法を提供します。
代替ソリューション:
X 軸が時間ではなく反復回数を表す場合は、DateAxis の代わりに NumberAxis を使用する必要があります。この変更により、固定時間間隔ではなく、計算の完了時にプロットを更新できるようになります。
コードの実装例:
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); } }
このコードでは、 process() メソッドは、新しいデータが利用可能になったときに EDT 上の XYSeries データセットを安全に更新するために使用されます。 XYLineAndShapeRenderer は、最初のシリーズの形状をレンダリングするように設定されており、プロット上に点が表示されます。
以上がJFreeChart シリーズをバックグラウンド スレッドから安全に更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。