JFreeChart (LineChart) akutalisiert nicht

Emrullah

Mitglied
Schönen Tag allen,

ich bin noch ein Neuling im Programmieren und deswegen bitte Nachsicht für mein Programm.
kurz zu meinem code,
ich habe zwei Jpanel in meinem JFrame bei dem einen gebe ich die daten ein in vier JTextfielde ( Ausgabe meines Heftes und das Jahr von - bis)
er nimmt die daten aus der Datenbank berechnet mir alles richtig die daten werden auch anerkannt aber der Chart wird nicht aktualisiert.

sobald ich statische werte angebe werden mir die Linien angezeigt.

repaint(); hab ich komplett ausprobiert mit allen Panels und dem JFrame.

leider keine Funktion.

seit drei tagen schau ich mir Foren und Code Zeilen an probiere rum und leider kein erfolg.

hier der wichtigste code was durchläuft;


Aktualiseriungs button;
[CODE lang="java" title="ButtonFunktion"]JButton btn_Aktualisieren = new JButton("Aktualisieren");
btn_Aktualisieren.setBounds(20,120,150,20);
btn_Aktualisieren.addActionListener(new ActionListener(){

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("");
System.out.println("");
System.out.println("");
y =null;
addieren=0;
abzug=0;
A_Menge=0;
int z,
z_A=Integer.parseInt(txf_Ausgabestart.getText()),
z2=Integer.parseInt(txf_Ausgabestart.getText());


for (int i = Integer.parseInt(txf_JahrStart.getText());
i <=Integer.parseInt(txf_JahrEnde.getText());
i++){

for(z=z_A;z<=Ausgaben;z++){
System.out.println("1 der for schleife i "+i);
System.out.println("2 der for schleife "+z);

if(i==Integer.parseInt(txf_JahrEnde.getText())){
System.out.println("1 der if schleife "+i+" "+z);

if(z<=Integer.parseInt(txf_Ausgabeende.getText())){

System.out.println(" der if schleife "+i+" "+z);


A_Menge+=1;

System.out.println(A_Menge+"A_Menge schleife");
System.out.println(""+z);
System.out.println("");
System.out.println("");
System.out.println("");
}

}else{

A_Menge+=1;
System.out.println(A_Menge+"A_Menge schleife");
System.out.println("");
System.out.println("");
System.out.println("");


}

}
z_A=1;

System.out.println(""+z);

}


x = new double[A_Menge];
y = new double[A_Menge+1];
y[A_Menge]=0;
int i = Integer.parseInt(txf_JahrStart.getText());

System.out.println(".actionPerformed()"+y[A_Menge]);
for (int a = 0;a <=A_Menge-1; a++){
y[a]=0;
System.out.println("a ausgabe schleife "+ a);

if(z2<Ausgaben){
//y_Menge(AboID,i,z2); y_Menge(AboID,i,z2);
sum (AboID,i,z2);
div(AboID,i,z2);
y[a] +=addieren;
y[a]-=abzug;
System.out.println("y[a ausgabe schelife" +y[a] +" addieren "+ addieren + " abzug "+abzug);
System.out.println("x ausgabe und a " + x+" "+ a);
System.out.println("vor x[a]=i "+ x[a]+"="+i);
x[a]=i;
z2+=1;
System.out.println("x ausgabe schleife "+ x[a]);
System.out.println("");
System.out.println("");

}else if (z2==Ausgaben){

sum (AboID,i,z2);
div(AboID,i,z2);
y[a] +=addieren;
y[a] -=abzug;
System.out.println("y[a ausgabe schelife" +y[a] +" addieren "+ addieren + " abzug "+abzug);
x[a] = i;
i+=1;
z2=1;
System.out.println("x ausgabe schleife "+ x[a]);
System.out.println("y ausgabe schleife " +y[a] );
System.out.println("");
}

}

dataset2 = dataset(x,y);



System.out.println("nach schleife y " + y[A_Menge=0]);
System.out.println("nach schleife y " + y[A_Menge=1]);
System.out.println("nach schleife y " + y[A_Menge=2]);
System.out.println("nach schleife y " + y[A_Menge=3]);

System.out.println("nach schleife y " + y[A_Menge]);
System.out.println("nach schleife x " + x[A_Menge-1]);



System.out.println("nach schleife A_Menge "+A_Menge);







}

});[/CODE]




[CODE lang="java" title="ChartPanel"] xax = new NumberAxis("Zeitraum");
yax = new NumberAxis("Abos");




//"Punkte" entspricht der Ueberschrift des Fensters
line = new XYLineAndShapeRenderer();
plot4 = new XYPlot(dataset2,xax,yax, line);

System.out.println(x+"ende " +y);
chart = new JFreeChart("PPVMedien Datenanalyse", plot4);

System.out.println("Panels.Datenanalyse.<init>(dataset2 test)" + dataset2);

frame1 = new ChartPanel(chart);
pnl_Daten.add(frame1,BorderLayout.CENTER);

pnl_Daten.setVisible(true);
frm_Daten.add(pnl_Daten);[/CODE]


und die Daten die er einbinden soll mit der X /Y Achse

[CODE lang="java" title="Datensatz für die linchart"] public XYSeriesCollection dataset(double[] x,double[] y){
// Bezeichung Punkte1 erscheint in der Legende

XYSeries series1 = new XYSeries("Punkte1");
for(int i=0;i<x.length;i++)
series1.add(x, y);

for(int i=0;i<x.length;i++){
System.out.println("Panels.Datenanalyse.dataset()"+ x + " und "+y + " Series1"+i);
}

// Zusammenfassen der beiden Serien
dataset2 = new XYSeriesCollection();
dataset2.addSeries(series1);

System.out.println("Panels.Datenanalyse.dataset()"+dataset2);

return dataset2;
}[/CODE]


Das gibt mir meine Console aus

[CODE lang="java" title="Debug ausgabe"]


1 der for schleife i 2019
2 der for schleife 2
1A_Menge schleife



3
1 der for schleife i 2020
2 der for schleife 1
2A_Menge schleife



1 der for schleife i 2020
2 der for schleife 2
3A_Menge schleife



3
1 der for schleife i 2021
2 der for schleife 1
1 der if schleife 2021 1
der if schleife 2021 1
4A_Menge schleife
1



1 der for schleife i 2021
2 der for schleife 2
1 der if schleife 2021 2
3
.actionPerformed()0.0
a ausgabe schleife 0
sum ausgabe5
Panels.Datenanalyse.sum(y Menge)5
Panels.Datenanalyse.sum(y Menge)5
sum ausgabenull
y[a ausgabe schelife5.0 addieren 5 abzug 0
x ausgabe schleife 2019.0
y ausgabe schleife 5.0

a ausgabe schleife 1
sum ausgabe38
Panels.Datenanalyse.sum(y Menge)43
Panels.Datenanalyse.sum(y Menge)43
sum ausgabenull
y[a ausgabe schelife43.0 addieren 43 abzug 0
x ausgabe und a [D@487d2f9 1
vor x[a]=i 0.0=2020
x ausgabe schleife 2020.0


a ausgabe schleife 2
sum ausgabenull
Panels.Datenanalyse.sum(y Menge)43
sum ausgabe5
Panels.Datenanalyse.div(y Menge)0.0



y[a ausgabe schelife38.0 addieren 43 abzug 5
x ausgabe schleife 2020.0
y ausgabe schleife 38.0

a ausgabe schleife 3
sum ausgabenull
Panels.Datenanalyse.sum(y Menge)43
sum ausgabe13
Panels.Datenanalyse.div(y Menge)0.0



y[a ausgabe schelife25.0 addieren 43 abzug 18
x ausgabe und a [D@487d2f9 3
vor x[a]=i 0.0=2021
x ausgabe schleife 2021.0


Panels.Datenanalyse.dataset()2019.0 und 5.0 Series10
Panels.Datenanalyse.dataset()2020.0 und 43.0 Series11
Panels.Datenanalyse.dataset()2020.0 und 38.0 Series12
Panels.Datenanalyse.dataset()2021.0 und 25.0 Series13
Panels.Datenanalyse.dataset()org.jfree.data.xy.XYSeriesCollection@83225199
nach schleife y 5.0
nach schleife y 43.0
nach schleife y 38.0
nach schleife y 25.0
nach schleife y 25.0
nach schleife x 2020.0
nach schleife A_Menge 3[/CODE]
 

mihe7

Top Contributor
Ich hoffe mal, dass der Code bei Dir schöner aussieht als hier... soweit ich das erkennen kann, weist Du zwar dataset2 einen neuen Wert zu, teilst das aber dem Plot nicht mit.
 

Emrullah

Mitglied
hi mihe7,

wieso übernimmt er das nicht dataset2 ist doch angebunden an ihn und mit repaint sollte er doch normaler weiße die neuen daten auch bemalen.

hast vill ein tipp was ich ausprobieren könnte ??
 

mihe7

Top Contributor
wieso übernimmt er das nicht dataset2 ist doch angebunden an ihn
Nein. Die Variable dataset2 speichert eine Referenz auf ein Objekt und die übergibst Du an Dein Chart. Damit ist das Chart höchstens mit dem Objekt verbunden, nicht aber mit der Variablen.

hast vill ein tipp was ich ausprobieren könnte ??
In dem Chaos ist das schwer zu sagen: plot4.setDataset(dataset2); könntest Du mal probieren.
 

Emrullah

Mitglied
super jetzt aktualisert er die linien aber der sollte bei der x achse bei 2019 anfangen und fängt bei null an hast du da auch eine idee vill
 

mihe7

Top Contributor
Keine Ahnung, ich arbeite nicht mit JFreeChart. Evtl. hilft es, wenn Du nach xax = new NumberAxis("Zeitraum"); noch xax.setAutoRange(true); einfügst.
 

Emrullah

Mitglied
danke für den ansatz mih 7

hab es dann so gemacht

nach dem

plot4.setDataset(dataset2);

weil das auto range hat er nicht übernommen egal wo ich es hingesetzt hatte

xax.setRange((double) x[0]-1, (double) x[A_Menge-1]+1);


das letzte wollte ich nur noch fragen was meinst im Chaos ??
über Vorschläge zur Verbesserung und übersichtlicher zu machen würde ich mich freuen;
 

mihe7

Top Contributor
was meinst im Chaos ??
Naja, da oben sehe ich drei Snippets, die ich vom Zusammenhang her nicht zuordnen kann und gar fürchterlich formatiert sind. Das sind jetzt zwei Dinge, die (hoffentlich) nur das Forum betreffen. Daneben sehe ich, dass Bennnungskonventionen nicht eingehalten werden und es scheinbar auch keine Trennung von UI und Logik gibt. Gerade letzteres macht die Sache nicht unbedingt leichter.
 

Emrullah

Mitglied
achso ja ich hab nur ein kleinen ausschnitt aus dem programm eingeblendet das auch relevant war;

die snippets sind mit abischt dort hinterlegt weil ich da stuck war und ich sehr viel rummachen musste und erlich gesagt faul war immer hoch und runter zu scrollen hab ich sie mit kurzer hand dort abgelegt aber im end programm wird alles noch mal sauber geordnet

mit ui und logik hab ich das leider noch nicht verstanden richtig was könnte ich da nach deinem vorschlag verbessern
 

mihe7

Top Contributor
Du lagerst den Datenkram (Berechnungen etc.) in eine Klasse aus und die UI-Klasse zeigt einfach nur an, was das Ding liefert.
 

Emrullah

Mitglied
ja davon ist vieles im programm bei mir noch zu gemüllt damit ich schritt für schritt sehen kann was alles geschieht das wird nachher alles rausgenommen

danke für deine vorschläge
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JFreeChart Linie nicht korrekt dargestellt Java Basics - Anfänger-Themen 1
B Markieren einzelner Punkte in JFreeChart Java Basics - Anfänger-Themen 1
N JFreeChart --> TimeSeries auslesen Java Basics - Anfänger-Themen 9
N JFreeChart - Value und veriable Zeitachse Java Basics - Anfänger-Themen 15
J JFreeChart wird nicht angezeigt Java Basics - Anfänger-Themen 6
A JFreeChart als png abspeichern Java Basics - Anfänger-Themen 2
S Jfreechart mit LinkedList befüllen Java Basics - Anfänger-Themen 1
G JFreeChart | Plot updaten bei neuem Dataset | wahrscheinlich "Thread-abhängig" Java Basics - Anfänger-Themen 3
S JFreeChart - Speichermanagement Java Basics - Anfänger-Themen 6
M Problem JFreeChart Java Basics - Anfänger-Themen 8
M JFreeChart Java Basics - Anfänger-Themen 5
P JFreechart Java Basics - Anfänger-Themen 9
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
G jfreechart einbinden + tutorial Java Basics - Anfänger-Themen 2
G JFreeChart einbinden Java Basics - Anfänger-Themen 4
M JFreeChart nach erneutem aufruf fehlt 2. Achse Java Basics - Anfänger-Themen 4
N JFreeChart Koordinatenachsen Java Basics - Anfänger-Themen 11
G Problem mit der Darstellung (JFreechart) Java Basics - Anfänger-Themen 3
M jfreechart - Balkendiagramm mit Werten anzeigen, geht das? Java Basics - Anfänger-Themen 2
S JFreeChart Java Basics - Anfänger-Themen 4
L JFreeChart Java Basics - Anfänger-Themen 3
L JFreeChart in Eclipse Java Basics - Anfänger-Themen 5
S JFreeChart Java Basics - Anfänger-Themen 7
M Legendenbeschriftung LineChart Java Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben