JFreeChart: ständiges Updaten der Chart stoppen

obscuri

Mitglied
Hi Leute!

Ich hab schon gegoogled und auch den Quelltext von verschiedenen JFreeChart-Klassen durchgesehen, aber keine adäquate Lösung für mein Problem gefunden.

Ich habe ein Dataset, dessen Daten ständig aktualisiert werden. Dadurch wird auch das zugehörige Chart natürlich ständig bei jeder kleinen Änderung aktualisiert, was aber nicht sein muss und was unnötig Rechenleistung frisst.

Die Datasets bieteten ja nicht die Möglichkeit das "feuern" des Events zu stoppen, welches anzeigt, dass sich das Dataset geändert hat. Oder hab ich da was übersehen? Die fireDatasetChanged()-Methode wird bei jeder Änderung aufgerufen.
Dann bin ich auf den Plot gestoßen, der erlaubt das feuern zu deaktivieren mit setNotify(false). Damit würde ich dann verhindern, dass das Chart aktualisiert wird, weil es nicht von der Änderung erfährt. Sehe ich das richtig? Allerdings kann ich dann auch nicht mehr manuell feuern, da die fireChangeEvent()-Methode protected ist und ich von außen also nicht dran komme. Außerdem ist es auch unnötig, dass der Plot von jeder Änderung des Datasets erfährt.

Was ich will ist einfach, dass sich das Chart nicht bei jeder Änderung aktualisiert, sondern nur nach bestimmten Zeitabständen oder Ereignissen, die ich aber von außen selbst bestimme.

Bis jetzt habe ich es so gemacht, dass ich zunächst alle Daten in eine HashMap schreibe und diese ständig aktualisiert wird. Dann nach einer bestimmten Zeit bzw. bei bestimmten Ereignissen kopiere ich die HashTable in das DataSet und das Chart wird automatisch neu dargestellt mit den neuen Werten. Das klappt eigentlich sehr gut. Aber der Umweg über die HashMap ist ja eher unschön. Aber so funktioniert es eben. Das Chart wird nur dann aktualisiert, wenn ich es will.

Ist das auch ohne dieses Vorgehen möglich?

Edit: Ich bin auch auf die Idee gekommen eine eigene Dataset-Klasse zu schreiben, die meine Anforderungen erfüllt und bei der ich von außen die Events abfeuern kann. Allerdings brauche ich auch verschiedene Datasets. Also eins für ein PieChart, eins für ein BarChart etc. sodass das auch wieder mit hohem Aufwand verbunden ist für jedes Chart eine eigene Dataset-Klasse zu implementieren.

Vielen Dank für eure Hilfe!
 
Zuletzt bearbeitet:

homer65

Top Contributor
Was machst du denn überhaupt?
Ein Dataset zeichnet von sich aus überhaupt keinen Chart.
Das macht doch irgendein Programm, oder habe ich da was falsch verstanden?
Was ist das denn für ein Programm?
 

Guybrush Threepwood

Top Contributor
Bis jetzt habe ich es so gemacht, dass ich zunächst alle Daten in eine HashMap schreibe und diese ständig aktualisiert wird. Dann nach einer bestimmten Zeit bzw. bei bestimmten Ereignissen kopiere ich die HashTable in das DataSet und das Chart wird automatisch neu dargestellt mit den neuen Werten. Das klappt eigentlich sehr gut. Aber der Umweg über die HashMap ist ja eher unschön. Aber so funktioniert es eben. Das Chart wird nur dann aktualisiert, wenn ich es will.

Ist das auch ohne dieses Vorgehen möglich?

Ich denke, das ist das Vorgehen der Wahl, wenn Du nicht tief in den Eingeweiden von JFree graben möchtest. Wie hoch sind denn die Zeitabstände, in denen der Chart gezeichnet werden soll? Wenn das mehr als wenige Sekunden sind, dann ist der Overhead sicher nicht sonderlich bedeutsam.
 

obscuri

Mitglied
Danke für eure Antworten.

Das Dataset zeichnet auch keinen Chart. Aber ich erstelle ja ein Chart und übergebe ein Dataset. Jetzt sind die beiden aber automatisch intern verbunden, ich denke über diese Listener-Schnittstelle. Wenn sich also etwas am Dataset ändert, wird sofort neugezeichnet und ich kann das nicht deaktivieren bzw. schon über den Plot, aber dann kann ich nicht manuell ein Event feuern, sodass sich der Chart wieder ändert. Das Dataset würde in einer Schleife bei jedem Durchlauf verändert werden und die Schleife wird je nach Input etwa eine Millionen mal durchlaufen, deswegen ist es völlig unzulässig, dass das Chart bei jedem Schleifendurchlauf und damit jeder Änderung des Datasets neu gezeichnet wird. Deswegen habe ich es bisher mit einer HashMap gemacht, und kopiere in einem von mir gewähltem Zeitpunkt die Werte in das Dataset und erst dann wird neugezeichnet. Im Moment passiert das etwa alle paar Sekunden, aber ich hab das mit der HashMap für eine eher unschöne Lösung gehalten. Aber wenn Guybrush meint, der Overhead wäre nicht so groß, dann werd ich das weiter so machen ^^
Danke Leute, das reicht mir ^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G jFreeChart Allgemeine Java-Themen 5
T Jfreechart continuous series mit fester Länge Allgemeine Java-Themen 23
H JFreechart createMultiplePieChart Allgemeine Java-Themen 2
M Suche Alternative zu JFreeChart Allgemeine Java-Themen 11
T jfreechart Linien/Punkttyp anpassen Allgemeine Java-Themen 1
S JFreechart: ValueMarker mit der Maus ziehen? Allgemeine Java-Themen 12
A JFreeChart funktioniert nicht :( Allgemeine Java-Themen 6
M Swing JFreechart x-Achse DateAxis, start im Ursprung Allgemeine Java-Themen 3
S Performante Visualisierung groẞer Datenmengen (ohne JFreeChart) Allgemeine Java-Themen 22
M Swing JFreeChart Domain Axis Label Abstand zu TickUnitLabel Allgemeine Java-Themen 9
S AWT JFreeChart in ein Label Allgemeine Java-Themen 7
J JFreeChart - Mehrere X-Achsen Einteilungen Allgemeine Java-Themen 3
T JFreeChart Diagramm speichern - Problem mit ImageIO nach Projektexport Allgemeine Java-Themen 3
B JFreeChart -> TimeSeries-Plot -> mehr y-Achsen Allgemeine Java-Themen 2
F JFreeChart Größe anpassen Allgemeine Java-Themen 8
K JFreeChart - Einträge in DomainAxis anpassen Allgemeine Java-Themen 2
I 2D-Grafik JFreeChart ChartPanel Problem mit dynamischer Grösse Allgemeine Java-Themen 3
M Diagramm mit JfreeChart Allgemeine Java-Themen 8
M JFreeChart mehrere PieCharts erstellen Allgemeine Java-Themen 2
M JFreeChart piechart - labelAnzeige Allgemeine Java-Themen 2
ARadauer JFreeChart: Beschriftung anzeigen Allgemeine Java-Themen 6
B JFreeChart - Achsenbeschriftung Allgemeine Java-Themen 4
ff Labels mit JFreeChart ausrichten Allgemeine Java-Themen 2
K JFreeChart Achsenbeschriftung ändern? Allgemeine Java-Themen 4
C jFreechart Diagram erstellen Allgemeine Java-Themen 2
G JFreeChart Allgemeine Java-Themen 5
G Jfreechart zwei charts Allgemeine Java-Themen 2
S JFreeChart LineChart Punkte über NULL Werte hinweg verbinden Allgemeine Java-Themen 5
E JFreeChart jars mit in meine Jar packen Allgemeine Java-Themen 6
G jfreechart probleme mit dem package? Allgemeine Java-Themen 2
D JFreeChart und Kuchendiagramm Allgemeine Java-Themen 3
P JFreeChart Fehlermeldung Allgemeine Java-Themen 2
P jFreeChart, binäre Signale Allgemeine Java-Themen 2
P jfreeChart y- Achsen hinzufügen Allgemeine Java-Themen 2
P jfreeChart Allgemeine Java-Themen 9
MQue JFreeChart Allgemeine Java-Themen 3
K JFreeChart Allgemeine Java-Themen 3
K JFreeChart und itext: Bildprobleme Allgemeine Java-Themen 4
G java.lang.NullPointerException JFreeChart Allgemeine Java-Themen 5
M JFreeChart: Zuviele Balken, Übersicht leidet dehr darunter Allgemeine Java-Themen 6
G JFreeChart - Labels Allgemeine Java-Themen 2
G Suche Beispiele jFreeChart Allgemeine Java-Themen 12
G Daten aus MySQL-Datenbank an JFreeChart übergeben Allgemeine Java-Themen 3
G JFreeChart drucken Allgemeine Java-Themen 2
M ständiges abfragen einer .txt Allgemeine Java-Themen 2
X Mehrere booleans in Datei Speichern, Updaten und Laden Allgemeine Java-Themen 1
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
TheDarkRose Maven Wie in Eclipse die Versionsnummern updaten? Allgemeine Java-Themen 24
D Updaten von Klassen durch jar.exe zerstört diese. Update durch WinRAR gelingt! Allgemeine Java-Themen 2
H Unidokumente updaten Allgemeine Java-Themen 3
X JDK updaten - wie am besten vorgehen? Allgemeine Java-Themen 5
T App updaten und neustarten Allgemeine Java-Themen 18
G Programm/Jar updaten Allgemeine Java-Themen 3
H Java-Klassen in JAR updaten - Zugriff auf JAR von Java aus Allgemeine Java-Themen 7
S JTable erzeugen und updaten Allgemeine Java-Themen 10
M dateien in einer zip datei hinzufügen - Archiv updaten Allgemeine Java-Themen 11
T jar - Archiv updaten Allgemeine Java-Themen 2
J java updaten? Allgemeine Java-Themen 8
W Jar datei updaten mit java Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben