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]
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]