JFreeChart neu zeichnen sich das Datenset geändert hat.

Status
Nicht offen für weitere Antworten.

semi2183

Mitglied
Hallo ich habe folgendes Problem:
Ich habe eine JTable die mir Daten anzeigt. Die Daten der JTable sind in der Klasse ModelTable welche TableModel implementiert.

Die Daten in der Tabelle können sich nun änder. Nach jeder Änderung soll daraus ein neuer LineChar erstellt werden.
Also habe ich einen Klasse geschrieb mit einer Methode die mir ein ChartPanel liefert und das Interface TableModelListener implementiert. Die Methode tableChanged() wird nun auch bei jeder Änderung der Daten aufgerufen.
In der Methode tableChanged() soll das Datenset des Charts neu erstelt werden und dem Chart oder ChartPanel gesagt werden, das es sich geändert hat. Ich weiß aber nicht wie ich ihn das mitteilen soll.

Kann mir da bitte jemand helfen?

Code:
public class ModelChart implements ChartModel, TableModelListener {

	private int debug;

	private Model model;
	
	private ChartPanel chatPanel = null;
	private JFreeChart chart = null;
	private LegendTitle legend;
	private XYPlot plot;
	//private StandardXYItemRenderer renderer;
	
	private XYSeriesCollection dataset;
	

	
	/**
	 * @param model
	 * @param debug
	 */
	public ModelChart(Model model, int debug) {
		//DEBUG
		if( debug >= 1 ) { System.out.println("ModelChart#ModelChart -- Konstruktor"); }
		
		this.debug = debug;
		this.model = model;
		this.model.addTableModelListener(this);
		
		//TODO leeres Datenset erstellen
		this.dataset = null;
		
		
	}
	@Override
	public ChartPanel getChartPanel() {
		//DEBUG
		if( debug >= 2 ) { System.out.println("ModelChart#getChartPanel"); }
		if( this.chatPanel == null) {
			this.chatPanel = new ChartPanel( this.getChart() ); 
			this.chart.addChangeListener(this.chatPanel);
		}
		
		return this.chatPanel;
	}
	
	private JFreeChart getChart() {
		//DEBUG
		if( debug >= 2 ) { System.out.println("ModelChart#getChart"); }
		
		if( chart == null )  {
			
			if(this.dataset == null) {
				this.dataset = new XYSeriesCollection();
				XYSeries series1 = new XYSeries("No Values");
				series1.add(1, 1);
				series1.add(2, 2);
				this.dataset.addSeries(series1);
			}			
			
			this.chart = ChartFactory.createXYLineChart("No title yet", "I[A]", "t[s]", this.dataset, PlotOrientation.HORIZONTAL, true, true, false);
			this.chart.setBackgroundPaint(Color.WHITE);
			this.legend = this.chart.getLegend();
			this.legend.setBackgroundPaint(Color.BLUE);
		    
			this.plot = this.chart.getXYPlot();
			this.plot.setBackgroundPaint(Color.LIGHT_GRAY);
			this.plot.setAxisOffset(new RectangleInsets( 5, 5, 5, 5 ));
		}
		return this.chart;
	}
	
	
	private XYSeriesCollection getChartData( List<TableRow> indata ) {
		//DEBUG
		if( debug >= 2 ) { System.out.println("ModelChart#getChartData"); }
		
		this.model.setStatusText("Erstelle Dut Diagram");
		
		XYSeriesCollection localdataset = new XYSeriesCollection();
		Iterator<TableRow> it_indata = indata.iterator();
		
		XYSeries series1 = new XYSeries("DUT" + indata.get(0).getDutNumber() );
		
		while( it_indata.hasNext() ) {
			TableRow row = it_indata.next();
			series1.add(row.getTime(), row.getCurrent());	
		}
		
		localdataset.addSeries(series1);
		
		return localdataset;
	}
	

	@Override
	public void tableChanged(TableModelEvent e) {
		//DEBUG
		if( debug >= 2 ) { System.out.println("ModelChart#tableChange"); }
		
		this.dataset = this.getChartData( this.model.getSelectedDataList() );

		if(this.debug >= 3 ) { System.out.println("ModleChart#tableChanged -- Neues Dataset. chartChanged wir aufgerufen!"); }
		this.chatPanel.chartChanged(new ChartChangeEvent(this, this.chart, ChartChangeEventType.NEW_DATASET));
			}
}
 
S

SlaterB

Gast
ich schlage vor, du verwendest bei Änderungen das alte DataSet weiter,
rufst
removeAllSeries()
auf und fügst deine neuen ein
 

semi2183

Mitglied
Ist mal wieder vom Type: "Gut das wir darüber gesprochen haben."

Es ist noch nicht perfekt. Er zeigt irgendwas an, aber es ändert sich wenn sich die Daten in der JTable ändern.

Ich bin dazu übergegangen, das datenset nicht neu zu setzen, sondern aus dem "alten Datenset" alle Datenserien heraus zu schmeißen und mit neuen Datenserien zu füllen.

Das ändert zumindestens die Anzeige.
 

semi2183

Mitglied
Ok jetzt past auch die Darstellung. Der Fehler lag bei der Daten Quelle.

Wie zum Teufel kann man das Thema als gelößt makieren?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
C JFreeChart X-Achse Werte skalieren, begrenzen, zoomen AWT, Swing, JavaFX & SWT 5
H JFreeChart BarDiagramm Balken der gleichen Serie unterschiedliche Farbe zuordnen AWT, Swing, JavaFX & SWT 2
H JFreeChart - DemoDataSetFactory Probleme AWT, Swing, JavaFX & SWT 1
H JFreeChart Charts überlagern AWT, Swing, JavaFX & SWT 2
C JFreeChart x-Achse mit absteigenden Werten AWT, Swing, JavaFX & SWT 1
K JFreeChart nicht ohne BarChartDemo startklar? AWT, Swing, JavaFX & SWT 5
T 2D-Grafik JFreeChart mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
D Swing JFreeChart Crosshair Label - setPreferredSize oder ähnliches, aber wo ? AWT, Swing, JavaFX & SWT 1
N jFreeChart einzelne Punkte anwählen und Formatieren AWT, Swing, JavaFX & SWT 0
B JFreeChart Gantt Höhe Tasks AWT, Swing, JavaFX & SWT 1
V JFreeChart: Tooltip auf Knopfdruck anzeigen AWT, Swing, JavaFX & SWT 2
V JFreechart: In Linechart Linien einzeichnen und Bereiche färben AWT, Swing, JavaFX & SWT 4
M In JFreeChart Geraden erzeugen AWT, Swing, JavaFX & SWT 11
M JFreechart Zoom out AWT, Swing, JavaFX & SWT 2
M Swing JFreechart X-Achse Tick auslesen AWT, Swing, JavaFX & SWT 13
M Swing JFreechart zoom x-achse neue Werte AWT, Swing, JavaFX & SWT 4
Z Diagramm mit jfreechart quadratisch erstellen AWT, Swing, JavaFX & SWT 1
D JFreeChart range der Y Achse verändern. AWT, Swing, JavaFX & SWT 1
G JFreeChart - SetSeriesColor Problem AWT, Swing, JavaFX & SWT 3
K 2D-Grafik JFreeChart plot.setBackgroundImage() AWT, Swing, JavaFX & SWT 1
K 2D-Grafik JFreeChart DateAxis AWT, Swing, JavaFX & SWT 9
T Event Handling JFreeChart Update AWT, Swing, JavaFX & SWT 2
A JFreeChart BarChart invertierte anzeige oder werte bereich von-bis AWT, Swing, JavaFX & SWT 4
Farbtopf Live update JFreeChart AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
D JFreeChart - aktuelle code beispiele AWT, Swing, JavaFX & SWT 11
M JFreeChart in ein File schreiben (bzw. JFrame in ein File Schreiben) AWT, Swing, JavaFX & SWT 2
A JFreeChart in GUI AWT, Swing, JavaFX & SWT 3
E JFreeChart: Timeseries-Chart und Area-Chart "überlappen" lassen AWT, Swing, JavaFX & SWT 6
B JFreeChart-Erweiterungen AWT, Swing, JavaFX & SWT 4
E JFreeChart in einer dynamischen Aufzeichnung neue Serien hinzufügen? AWT, Swing, JavaFX & SWT 7
I XML - JFreeChart AWT, Swing, JavaFX & SWT 15
N Dynamische JFreechart updated UI nicht AWT, Swing, JavaFX & SWT 5
S JFreeChart - Schriftgröße der Legende AWT, Swing, JavaFX & SWT 2
O Swing JFreechart subtitle formatieren AWT, Swing, JavaFX & SWT 3
N JFreeChart: Plot soll mit skalieren AWT, Swing, JavaFX & SWT 5
R JFreeChart Plots AWT, Swing, JavaFX & SWT 6
J JFreechart spezielles Balkendiagramm AWT, Swing, JavaFX & SWT 2
R JFreeChart: nur jeden n-ten Wert auf der X-Achse anzeigen AWT, Swing, JavaFX & SWT 5
R JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern AWT, Swing, JavaFX & SWT 8
T JFreeChart Linine einzeichnen AWT, Swing, JavaFX & SWT 2
M JFreeChart Ausrichtung der Balken AWT, Swing, JavaFX & SWT 2
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
D JFreeChart Breite (width) ändern AWT, Swing, JavaFX & SWT 6
A Swing JFreeChart, Gantt, Schichtplan AWT, Swing, JavaFX & SWT 3
R JFreeChart Skalierung zur Laufzeit ändern AWT, Swing, JavaFX & SWT 7
F Wie lade ich eine CategoryDataset aus XML ins JFreeChart? AWT, Swing, JavaFX & SWT 9
J JFreeChart - mehrere Y-Achsen AWT, Swing, JavaFX & SWT 2
A JFreeChart: 2 X-Achsen für ein Dataset AWT, Swing, JavaFX & SWT 2
T JFreeChart export Problem AWT, Swing, JavaFX & SWT 4
S JFreeChart Achse immer sichtbar AWT, Swing, JavaFX & SWT 2
D JFreechart maximalangezeigter Wertebereich AWT, Swing, JavaFX & SWT 3
B AWT [JFreeChart] malt nicht so wie ich will :-( AWT, Swing, JavaFX & SWT 2
B JFreeChart Balkendiagramm ActionEvent AWT, Swing, JavaFX & SWT 2
L Labels sichtbar - JFreeChart AWT, Swing, JavaFX & SWT 5
A Schachbrettartiges Diagramm mit JFreeChart AWT, Swing, JavaFX & SWT 4
E JFreeChart AWT, Swing, JavaFX & SWT 2
L Gantt Chart - JFreeChart AWT, Swing, JavaFX & SWT 5
K JFreeChart im JScrollPane ausblenden AWT, Swing, JavaFX & SWT 2
L JFreeChart Labelrotation AWT, Swing, JavaFX & SWT 2
L JFreeChart Farbe von Balken AWT, Swing, JavaFX & SWT 5
L JFreeChart Balkenanordnung AWT, Swing, JavaFX & SWT 10
L JFreeChart Achsenskalierung AWT, Swing, JavaFX & SWT 4
L JFreeChart - Dataset befüllen AWT, Swing, JavaFX & SWT 2
L JFreeChart - Line Shapes AWT, Swing, JavaFX & SWT 15
N JFreeChart - Basics AWT, Swing, JavaFX & SWT 2
L NullPointerException JFreeChart AWT, Swing, JavaFX & SWT 10
L JFreeChart - Legende vertikal AWT, Swing, JavaFX & SWT 5
L JFreeChart - Linienstärke einstellen AWT, Swing, JavaFX & SWT 2
L JFreeChart Einstellungen AWT, Swing, JavaFX & SWT 22
L JFreeChart - Gitterfarbe schwarz AWT, Swing, JavaFX & SWT 4
L JFreeChart StackedBar + Line-Chart kombinieren AWT, Swing, JavaFX & SWT 4
L JFreeChart - Performance bei PNG-Erstellung AWT, Swing, JavaFX & SWT 5
L JFreeChart - Legende beliebig positionieren AWT, Swing, JavaFX & SWT 16
G JFreechart Balken einfärben AWT, Swing, JavaFX & SWT 6
F Probleme mit NumberAxis bei JFreeChart AWT, Swing, JavaFX & SWT 5
G jfreechart (Diagramm speichern mit ein vorgegebenen Namen) AWT, Swing, JavaFX & SWT 6
K JFreeChart Eigentschaften des Charts ändern AWT, Swing, JavaFX & SWT 8
G JFreeChart und das updaten AWT, Swing, JavaFX & SWT 7
G Ausser Jfreechart, Chart Programme? AWT, Swing, JavaFX & SWT 11
S Dimensionen JFreeChart AWT, Swing, JavaFX & SWT 5
S JFreeChart Stufendiagramm AWT, Swing, JavaFX & SWT 2
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K JFreeChart: Platz zwischen Balken AWT, Swing, JavaFX & SWT 3
M JFreeChart Handbuch? AWT, Swing, JavaFX & SWT 8
P JFreeChart - TimeSeriesDiagram AWT, Swing, JavaFX & SWT 2
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
G 2D-Grafik Grafik in zwei verschiedenen Fenstern gleichzeitig zeichnen AWT, Swing, JavaFX & SWT 9
S Event Handling Neu zeichnen nur wenn Berechnung fertig ist AWT, Swing, JavaFX & SWT 4
W JavaFX Ich kann keinen Kreis richtig zeichnen AWT, Swing, JavaFX & SWT 8
CptK Funktionsgraphen effizient zeichnen und nur Teile von JPanel erneuern AWT, Swing, JavaFX & SWT 2
G Dreieck aus Pixeln zeichnen AWT, Swing, JavaFX & SWT 8
N Mit KeyListener ein rechteck zeichnen AWT, Swing, JavaFX & SWT 9
B 2D-Grafik paintcomponent Probleme beim zeichnen AWT, Swing, JavaFX & SWT 10
Z Swing Graph zeichnen lassen AWT, Swing, JavaFX & SWT 16
O Kann kei neues Panel zum zeichnen aufrufen... AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben