Heim >Java >javaLernprogramm >Warum verursacht die dynamische Aktualisierung einer JFreeChart-Serie Ausnahmen vom Typ „Index außerhalb der Grenzen'?

Warum verursacht die dynamische Aktualisierung einer JFreeChart-Serie Ausnahmen vom Typ „Index außerhalb der Grenzen'?

Susan Sarandon
Susan SarandonOriginal
2024-12-21 19:43:12962Durchsuche

Why Does Updating a JFreeChart Series Dynamically Cause

Zufällige Fehler beim Ändern von Serien mit JFreeChart

Einführung

Diese Frage untersucht ein aufgetretenes Problem beim Versuch, eine Reihe in einem JFreeChart-Diagramm dynamisch zu aktualisieren. Die ursprüngliche Implementierung führte zu Ausnahmen und falscher Datenanzeige.

Problem

Der bereitgestellte Code zielte darauf ab, eine Datenreihe innerhalb eines Threads zu ändern, stieß jedoch auf „Serienindex aus“. Ausnahmen für „Index außerhalb der Grenzen“ und „Index außerhalb der Grenzen“. Auch die Grafikanzeige funktionierte nicht richtig. Der Grund für diese Fehler war eine falsche Synchronisierung und die unangemessene Verwendung einer DateAxis.

Lösung

Der richtige Ansatz besteht darin, den Datensatz über die Methode „process()“ von zu aktualisieren ein SwingWorker. Darüber hinaus sollte für die Domäne eine NumberAxis anstelle einer DateAxis verwendet werden. Hier ist ein überarbeiteter Codeausschnitt, der diese Lösung demonstriert:

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);
    }
}

Diskussion

Die Verwendung eines SwingWorkers gewährleistet eine ordnungsgemäße Synchronisierung und ermöglicht die sichere Aktualisierung des Datensatzes aus dem Worker heraus Faden. NumberAxis ist für die Domäne geeignet, da die X-Achse die Anzahl der Iterationen und nicht einen Zeitraum darstellt.

Alternativer Ansatz

Ein alternativer Ansatz ist die Verwendung einer DynamicTimeSeriesCollection . Diese Methode ist jedoch nicht geeignet, wenn die X-Achsen-Domäne auf Iterationen und nicht auf Zeiträumen basiert und Aktualisierungen erfordert, wenn die Berechnungen abgeschlossen sind, nicht in regelmäßigen Abständen.

Zusätzliche Hinweise

Das bereitgestellte Code-Snippet erstellt ein Liniendiagramm, das den Fortschritt einer Berechnung auf der Y-Achse darstellt. Die X-Achse stellt die Iterationsnummer dar. Das Diagramm wird im Verlauf der Berechnung dynamisch aktualisiert.

Das obige ist der detaillierte Inhalt vonWarum verursacht die dynamische Aktualisierung einer JFreeChart-Serie Ausnahmen vom Typ „Index außerhalb der Grenzen'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn