Hi Leute,
ich habe folgendes Problem. Bisher haben wir bei mir in der Firma die geänderten Daten in der JTable über eine CellEditorListener abgefangen um sie dadurch merken zu können damit man sie am Ende in die DB schrieben kann. Nun ist es so dass ich mehrere Tabellen habe. Ich wollte aber nicht für jede Tabelle eine eigen CelleditorListenKlasse schreiben. Weil in der editingStoppen-Methode greife ich ab welches Feld geändert wurde um so den Wert auch in das Richtige DB Feld eintragen zu können
Hier mal der Code zur CelleditorListener Klasse:
Meine Idee wär jetzt gewesen irgendwie über das chnageevent e an die JTbale zu gelangen. Jedoch bekommt man bei getSource() nur das CellEditorTextField.
Hat jmd. ne Idee?
Gruß Jan
ich habe folgendes Problem. Bisher haben wir bei mir in der Firma die geänderten Daten in der JTable über eine CellEditorListener abgefangen um sie dadurch merken zu können damit man sie am Ende in die DB schrieben kann. Nun ist es so dass ich mehrere Tabellen habe. Ich wollte aber nicht für jede Tabelle eine eigen CelleditorListenKlasse schreiben. Weil in der editingStoppen-Methode greife ich ab welches Feld geändert wurde um so den Wert auch in das Richtige DB Feld eintragen zu können
Hier mal der Code zur CelleditorListener Klasse:
Java:
tableDatei.getColumnModel().getColumn(1).getCellEditor().addCellEditorListener(
new CellLis());
...
...
public class CellLis implements CellEditorListener {
public void editingCanceled(ChangeEvent e) {
System.out.println("CellLis editingCanceled Jan");
}
public void editingStopped(ChangeEvent e) {
try {
if (e.getSource() instanceof JTable) {
JTable table = (JTable) e.getSource();
int colId = table.getSelectedColumn();
int rowId = table.getSelectedRow();
Object value = table.getModel().getValueAt(rowId, colId);
String colName = table.getColumnName(colId);
String objIDColName = getObjIDFeldName(e.getSource().toString());
if (value != null) {
if (!(objIDColName == null || objIDColName.equalsIgnoreCase(""))) {
int indexObjID = table.getColumnModel().getColumnIndex(objIDColName);
String objID = table.getModel().getValueAt(rowId, indexObjID)
.toString();
if (!(objID == null || objID.equalsIgnoreCase(""))) {
merkeGeaenderteDaten(rowId, objID, colName, value.toString());
}
((DefaultTableModel) table.getModel()).fireTableDataChanged();
}
}
}
} catch (Exception ex) {
System.out.println("Fehler beim merken der geänderten Daten" + ex.getMessage());
ex.printStackTrace();
}
}
}
Hat jmd. ne Idee?
Gruß Jan