Mam zrobione odczytywanie z pliku, ale teraz chciałabym, żeby w actionPerformed zrobić tak, żeby odczytywanie danych było uogólnione. Zrobiłam tam pętlę for a później if, ale nie wiem dlaczego nie działa. Byłabym wdzięczna za pomoc.
package ramka;
public class Aktywator {
public static void main(String[] args) {
Ramka mojaRamka = new Ramka();
mojaRamka.setVisible(true);
}
}
package ramka;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class Ramka extends JFrame implements ActionListener{
JComboBox<String> lista;
JLabel tekst;
JPanel panel;
JFreeChart w;
Component chartPanel;
ArrayList<Dane> lista2 = new ArrayList<Dane>();
int r;
double a,b,c,d,f,g,h,i,j,k,l,m, xsr = 114/12, n = ((((1-xsr)*a)+((2-xsr)*b)+((3-xsr)*c)+((4-xsr)*d)+((5-xsr)*f)+
((6-xsr)*g)+((7-xsr)*h)+((8-xsr)*i)+((9-xsr)*j)+((10-xsr)*k)+((11-xsr)*l)+((12-xsr)*m))/((1-xsr)+(2-xsr)+(3-xsr)+
(4-xsr)+(5-xsr)+(6-xsr)+(7-xsr)+(8-xsr)+(9-xsr)+(10-xsr)+(11-xsr)+(12-xsr))),
ysr = (a+b+c+d+f+g+h+i+j+k+l+m)/12, o = ysr-(n*xsr), y11 = (n*1)+o, y12 = (n*12)+o;
XYSeriesCollection akcje;
public Ramka(){
load(lista2);
setTitle("Notowanie akcji giełdowych");
setSize(1000,700);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tekst = new JLabel("Notowanie akcji giełdowych");
tekst.setFont(new Font("Serif", Font.PLAIN, 20));
tekst.setBounds(0, 300, 400, 20);
lista = new JComboBox<String>();
lista.addItem("Akcja 1");
lista.addItem("Akcja 2");
lista.addItem("Akcja 3");
lista.addItem("Akcja 4");
lista.addItem("Akcja 5");
lista.addActionListener(this);
lista.setBounds(800,0, 100, 50);
panel = new JPanel();
akcje = new XYSeriesCollection();
XYSeries serie1 = new XYSeries("Akcje");
serie1.add(1, a);
serie1.add(2, b);
serie1.add(3, c);
serie1.add(4, d);
serie1.add(5, f);
serie1.add(6, g);
serie1.add(7, h);
serie1.add(8, i);
serie1.add(9, j);
serie1.add(10, k);
serie1.add(11, l);
serie1.add(12, m);
akcje.addSeries(serie1);
XYSeries serie2 = new XYSeries("Średnia krocząca");
serie2.add(2, (a+b+c)/3);
serie2.add(3, (b+c+d)/3);
serie2.add(4, (c+d+f)/3);
serie2.add(5, (d+f+g)/3);
serie2.add(6, (f+g+h)/3);
serie2.add(7, (g+h+i)/3);
serie2.add(8, (h+i+j)/3);
serie2.add(9, (i+j+k)/3);
serie2.add(10, (j+k+l)/3);
serie2.add(11, (k+l+m)/3);
XYSeries serie3 = new XYSeries("Trend");
serie3.add(0, 5);
serie3.add(12, 9);
akcje.addSeries(serie2);
akcje.addSeries(serie3);
w=ChartFactory.createXYLineChart(
"XY Chart", "Czas", "Cena", akcje,
PlotOrientation.VERTICAL, true, true, false);
chartPanel = new ChartPanel(w);
chartPanel.setBounds(400, 100, 600, 500);
panel.add(tekst);
panel.add(lista);
panel.add(chartPanel, BorderLayout.SOUTH);
add(panel);
}
private static void load(ArrayList <Dane> lista2) {
File file = new File("Dane.txt");
FileReader freader =null ;
try {
freader = new FileReader(file);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedReader breader = new BufferedReader(freader);
lista2.clear();
String line;
try {
while ((line = breader.readLine()) != null) {
if (line.equals("Akcja")) {
String nazwa = breader.readLine();
String a = breader.readLine();
String b = breader.readLine();
String c = breader.readLine();
String d = breader.readLine();
String f = breader.readLine();
String g = breader.readLine();
String h = breader.readLine();
String i = breader.readLine();
String j = breader.readLine();
String k = breader.readLine();
String l = breader.readLine();
String m = breader.readLine();
Dane mojDokumentTekstowy = new Dane(nazwa, a, b, c, d, f, g, h, i, j, k, l, m);
lista2.add(mojDokumentTekstowy);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
breader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
Object zrodlo = e.getSource();
if(zrodlo == lista){
String wykres = (String) lista.getSelectedItem();
for (int r = 0; r < lista2.size(); r++){
if (wykres.equals(lista2.get(r)))
a = Double.parseDouble(lista2.get(r).geta());
b = Double.parseDouble(lista2.get(r).getb());
c = Double.parseDouble(lista2.get(r).getc());
d = Double.parseDouble(lista2.get(r).getd());
f = Double.parseDouble(lista2.get(r).getf());
g = Double.parseDouble(lista2.get(r).getg());
h = Double.parseDouble(lista2.get(r).geth());
i = Double.parseDouble(lista2.get(r).geti());
j = Double.parseDouble(lista2.get(r).getj());
k = Double.parseDouble(lista2.get(r).getk());
l = Double.parseDouble(lista2.get(r).getl());
m = Double.parseDouble(lista2.get(r).getm());
changeData(wykres);
}
}
}
private void changeData(String title) {
akcje.removeAllSeries();
XYSeries serie1 = new XYSeries(title);
serie1.add(1, a);
serie1.add(2, b);
serie1.add(3, c);
serie1.add(4, d);
serie1.add(5, f);
serie1.add(6, g);
serie1.add(7, h);
serie1.add(8, i);
serie1.add(9, j);
serie1.add(10, k);
serie1.add(11, l);
serie1.add(12, m);
akcje.addSeries(serie1);
XYSeries serie2 = new XYSeries("Średnia krocząca");
serie2.add(2, (a+b+c)/3);
serie2.add(3, (b+c+d)/3);
serie2.add(4, (c+d+f)/3);
serie2.add(5, (d+f+g)/3);
serie2.add(6, (f+g+h)/3);
serie2.add(7, (g+h+i)/3);
serie2.add(8, (h+i+j)/3);
serie2.add(9, (i+j+k)/3);
serie2.add(10, (j+k+l)/3);
serie2.add(11, (k+l+m)/3);
akcje.addSeries(serie2);
XYSeries serie3 = new XYSeries("Trend");
serie3.add(0, 5);
serie3.add(12, 9);
akcje.addSeries(serie3);
}
}
package ramka;
import java.util.ArrayList;
public class Dane {
private String nazwa;
private String a;
private String b;
private String c;
private String d;
private String f;
private String g;
private String h;
private String i;
private String j;
private String k;
private String l;
private String m;
public Dane(String nazwa, String a, String b, String c, String d, String f, String g, String h, String i, String j, String k, String l, String m)
{
this.nazwa = nazwa;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.f = f;
this.g = g;
this.h = h;
this.i = i;
this.j = j;
this.k = k;
this.l = l;
this.m = m;
}
public void seta(String a) {
this.a = a;
}
public String geta() {
return a;
}
public void setb(String b) {
this.b = b;
}
public String getb() {
return b;
}
public void setc(String c) {
this.c = c;
}
public String getc() {
return c;
}
public void setd(String d) {
this.d = d;
}
public String getd() {
return d;
}
public void setf(String f) {
this.f = f;
}
public String getf() {
return f;
}
public void setg(String g) {
this.g = g;
}
public String getg() {
return g;
}
public void seth(String h) {
this.h = h;
}
public String geth() {
return h;
}
public void setj(String j) {
this.j = j;
}
public String getj() {
return j;
}
public void setk(String k) {
this.k = k;
}
public String getk() {
return k;
}
public void seti(String i) {
this.i = i;
}
public String geti() {
return i;
}
public void setl(String l) {
this.l = l;
}
public String getl() {
return l;
}
public void setm(String m) {
this.m = m;
}
public String getm() {
return m;
}
}