ホームページ >Java >&#&チュートリアル >JFreeChart シリーズをバックグラウンド スレッドから安全に更新するにはどうすればよいですか?

JFreeChart シリーズをバックグラウンド スレッドから安全に更新するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-16 11:29:14324ブラウズ

How to Safely Update JFreeChart Series from a Background Thread?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。