Hallo,
habe ein Programm wo mehrere Tabs dynamisch erstellt werden und
auf diesen befinden sich dann wieder dynamisch erstellte JComboBoxs.
Auf Butto-Druck sollen dann die Inhalte des jeweiligen Tabs in eine Datenbank
geschrieben werden. Mein Problem liegt darin, dass nur der erste Tab
funktionier und bei den anderen eine Nullpointerexception ausgeworfen wird.
Ich denke das Problem liegt darin das der Listener nicht auf die ComboBoxen der
richtigen Instanz vom Tab zugreift, sondern nur auf die zu letzt erstellte Instanz.
Meine Frage ist nun, wie ich auf die richtige zugreifen kann.
Die Tabs befinden sich im Array group[] und die ComboBoxen in den Array heim[] und gast[].
habe ein Programm wo mehrere Tabs dynamisch erstellt werden und
auf diesen befinden sich dann wieder dynamisch erstellte JComboBoxs.
Auf Butto-Druck sollen dann die Inhalte des jeweiligen Tabs in eine Datenbank
geschrieben werden. Mein Problem liegt darin, dass nur der erste Tab
funktionier und bei den anderen eine Nullpointerexception ausgeworfen wird.
Ich denke das Problem liegt darin das der Listener nicht auf die ComboBoxen der
richtigen Instanz vom Tab zugreift, sondern nur auf die zu letzt erstellte Instanz.
Meine Frage ist nun, wie ich auf die richtige zugreifen kann.
Die Tabs befinden sich im Array group[] und die ComboBoxen in den Array heim[] und gast[].
Code:
public class dialog_setpreround extends JDialog
{
JPanel mainpanel = new JPanel();
JPanel[] group = new JPanel[10];
private DatabaseMetaData mcoMetaData = null;
//Hilfsvariablen
int i=1, j=0;
int stunden;
int minuten;
public dialog_setpreround(Frame owner){
super(owner, "Vorrunde generieren", true);
this.getContentPane().setLayout(new BorderLayout());
this.setLocation(100,100);
this.setSize(600,600);
generatetabs();
this.setVisible(true);
}
/*
* gerneratetabs() liest Tabellennamen (nur Gruppe*)
* aus der DB und erstellt daraus Tabs, speichert diese in group[]
* ->Ruft setTabContent auf
*/
public void generatetabs(){........}
/*
* setTabContent setze alle Oberflächenelemente der Tabs
* ->Ruft getColumn(String table, String column) auf
*/
private void setTabContent(final int tab){
int pause = Integer.parseInt(getColumn("System", "Pause")[0]);
int dauer = Integer.parseInt(getColumn("System", "Spielzeit")[0]);
final int length = Integer.parseInt(getColumn("System", "Vorrundenpaarungen")[0]);
String startzeit = getColumn("System","Startzeit")[0];
group[i].setLayout(null);
final JComboBox[] heim = new JComboBox[50];
final JComboBox[] gast = new JComboBox[50];
final JComboBox[] feld = new JComboBox[50];
final JLabel[] time = new JLabel[50];
JLabel timehl = new JLabel("Startzeit:");
timehl.setBounds(new Rectangle(120, 50, 120, 20));
JLabel feldhl = new JLabel("Spielfeld:");
feldhl.setBounds(new Rectangle(50, 50, 100, 20));
JButton end = new JButton("Fertig");
end.setBounds(new Rectangle(480, 450, 70, 20));
int anzahl=Integer.parseInt(getColumn("System", "Spielfelder")[0]);
int t;
for (t=1; t<=length; t++){
minuten=minuten+dauer+pause;
if(minuten>=60){
minuten=minuten-60;
stunden=stunden+1;
}
String felder[] = new String[anzahl];
for (int p=0; p<anzahl; p++){
felder[p]=""+(p+1);
}
JLabel time1 = new JLabel("Uhr");
time1.setBounds(new Rectangle(155, t*30+50, 120, 20));
JLabel gegen = new JLabel("-");
gegen.setBounds(new Rectangle(355, t*30+50, 120, 20));
feld[j] = new JComboBox(felder);
feld[j].setBounds(new Rectangle(50, t*30+50, 40, 20));
feld[j].setSelectedIndex(i-1);
time[j] = new JLabel(""+stunden+":"+minuten);
time[j].setBounds(new Rectangle(120, t*30+50, 120, 20));
heim[j] = new JComboBox(getColumn("Gruppe"+i, "Mannschaft"));
heim[j].setBounds(new Rectangle(210, t*30+50, 120, 20));
gast[j] = new JComboBox(getColumn("Gruppe"+i, "Mannschaft"));
gast[j].setBounds(new Rectangle(380, t*30+50, 120, 20));
group[i].add(heim[j]);
group[i].add(gast[j]);
group[i].add(time[j]);
group[i].add(feld[j]);
group[i].add(time1);
group[i].add(gegen);
j++;
}
JButton insert = new JButton("Eintragen");
insert.setBounds(new Rectangle(400, t*30+100, 100, 20));
group[i].add(timehl);
group[i].add(feldhl);
group[i].add(insert);
group[i].add(end);
//Denke HIER ist das PROBLEM
insert.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String heim1, gast1, start;
for (int p=0; p<length; p++){
heim1 = (String) group[i].heim[p].getSelectedItem();
gast1 = (String) gast[p].getSelectedItem();
start = time[p].getText();
int field = Integer.parseInt((String) feld[p].getSelectedItem());
insertMatch(tab+1, field, start, heim1, gast1);
System.out.println(heim1+gast1+start+field);
System.out.println(tab);
}
}
});
}
/*
* getTeam(String table, String column) gibt
* die Spalte Column aus der Tabelle table aus
* und schreibt alle Einträge in ein Array
*/
private String[] getColumn(String table, String column){........}
/*
* instertMatch schreibt Paarung in DB
*/
private void insertMatch(int group, int field, String time, String heim, String gast){.....}
}