> Java > java지도 시간 > 백그라운드 스레드에서 JFreeChart 시리즈를 안전하게 업데이트하는 방법은 무엇입니까?

백그라운드 스레드에서 JFreeChart 시리즈를 안전하게 업데이트하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-16 11:29:14
원래의
320명이 탐색했습니다.

How to Safely Update JFreeChart Series from a Background Thread?

JFreeChart를 사용하여 시리즈를 수정하는 동안 예기치 않은 오류 발생

문제:
JFreeChart를 동적으로 업데이트하려는 시도 중 플롯에서 사용자에게 "계열 인덱스가 범위를 벗어났습니다" 및 "인덱스가 범위를 벗어났습니다"가 발생했습니다. 백그라운드 스레드 내에서 데이터세트를 변경하려고 할 때 예외가 발생했습니다.

근본 원인:
문제는 데이터세트가 스레드가 아닌 백그라운드 스레드에서 직접 수정되었다는 것입니다. -안전한 작업.

해결 방법:
스레드로부터 안전한 업데이트를 보장하려면 사용자는 스윙워커. 이 클래스는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿