Hallo
Ich schreibe ein Programm, das Inhalte aus einer SQL DB in einer JTable einliest.
Der ActionListener des Buttons:
der SelectionListener:
Methode collection Insert (stark gekürzt):
Hier (Sys-Output "springst rüber") stoppt das Programm bei Verwendung eines Selection Listeners:
Ausgabe auf der Konsole:
Kann es sein, dass der SelectionListener eine Selektion auf die JTAble macht, die so gar nicht mehr existiert...oder wo kann das Problem liegen?
Danke
GGK
Ich schreibe ein Programm, das Inhalte aus einer SQL DB in einer JTable einliest.
- die Table hat ein Popup Menü mit dem ich die selektierte Zeile in mehrere JTextFelder übertrage.
- die JTextFelder können editiert werden
- über einen Button werden dabei durchgeführte Änderungen in die SQL DB übertragen
- die Tabelle wird dann neu eingelesen und die Änderungen gleich dargestellt.
- Wenn ich jedoch einen SelectionListener auf die Tabelle setze damit die Werte der selektierten Zeile beim Klicken in die Zeile übertragen werden. Passiert folgendes:
- die Werte der selektierten Zeile werden in die JTextFelder übertragen
- die Änderungen in den JTextFeldern werden in die DB übertragen
- die Tabelle wird neu eingelesen
- die Änderungen werden aber Nicht dargestellt...
Der ActionListener des Buttons:
Java:
ButtonDBUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
SqlConnect readDB = new SqlConnect();
insert = Boolean.valueOf(false);
try {
collection.dataCollection();
readDB.writeDataBase(insert);
readDB.close();
}
catch (Exception e1)
{
e1.printStackTrace();
}
}
});
der SelectionListener:
Java:
getTable().getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent arg0) {
// TODO Auto-generated method stub
collection.insertData();
System.out.println("Listener arbeitet");
btnSpeichern.setEnabled(false);
chckbxActivate.setSelected(false);
}
});
Methode collection Insert (stark gekürzt):
Java:
public void insertData() {
table = Hauptprogramm.table;
dataList = Hauptprogramm.selectData(table);
System.out.println("DataList: " + dataList);
}
Hier (Sys-Output "springst rüber") stoppt das Programm bei Verwendung eines Selection Listeners:
Java:
public static ArrayList selectData(JTable table)
{
ArrayList dataList = new ArrayList();
int columns = table.getColumnCount();
int col = 0;
Object fetchElementID = "";
for (col = 0; col < columns; col++)
{
//*System.out.println("Col: "+col +" Col im View: "+table.convertColumnIndexToView(col));
System.out.println("Col Vergleich ["+col+"]: "+table.getModel().getColumnName(col)+": "+col+" "+table.convertColumnIndexToView(col)+" "+table.convertColumnIndexToModel(col));
//*if (col < columns - 1) {
System.out.println("col: "+col);
if (table.convertColumnIndexToView(col)!= -1) {
//*System.out.println(col + " : " + table.getValueAt(table.getSelectedRow(), table.convertColumnIndexToView(col)));
dataList.add(table.getValueAt(table.getSelectedRow(), table.convertColumnIndexToView(col)) + " ");
System.out.println("Springst rüber?"); //* ---> wird beim SelectionListener nicht mehr erreicht
}
if (col == 29) {
fetchElementID = table.getModel().getValueAt(table.getSelectedRow(), 29);
dataList.add(fetchElementID);
System.out.println("Object: " + fetchElementID);
}
}
return dataList;
}
Ausgabe auf der Konsole:
Code:
Col Vergleich [0]: Test Bestanden: 0 0 0
col: 0
Kann es sein, dass der SelectionListener eine Selektion auf die JTAble macht, die so gar nicht mehr existiert...oder wo kann das Problem liegen?
Danke
GGK
Zuletzt bearbeitet: