Hallo, ich möchte mit der Entfernen-Taste eine oder mehrere Zeilen aus einer JTable löschen. Das TableModel habe ich selbst geschrieben.
Das Problem ist, dass die markierte Zelle (die Tabelle hat zwei Spalten) den Wert der Zelle darunter annimmt, während die nicht markierte Zelle der Zeile erhalten bleibt. Erst wenn ich eine andere Zeile markiere erscheint das erwünschte Bild (Zeile gelöscht, die anderen Zeile rücken auf). Ich hab die Tabelle einfach mit einem Keylistener ausgestattet. Der Code sieeht so aus:
Das Problem ist, dass editor == null immer zutrifft, obwohl die Tabelle bzw. das Model editierbar sind.
Ich hab mich hier im Forum schon umgesehen (so bin ich ja auch den Code mit dem TableCell Editor gekommen), aber das Problem hatte glauch ich bis jetzt noch keiner.
Der ManipulationListener:
Das Problem ist, dass die markierte Zelle (die Tabelle hat zwei Spalten) den Wert der Zelle darunter annimmt, während die nicht markierte Zelle der Zeile erhalten bleibt. Erst wenn ich eine andere Zeile markiere erscheint das erwünschte Bild (Zeile gelöscht, die anderen Zeile rücken auf). Ich hab die Tabelle einfach mit einem Keylistener ausgestattet. Der Code sieeht so aus:
Java:
table.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent ke) {
if (ke.getKeyCode() == KeyEvent.VK_DELETE) {
final TableCellEditor editor = table.getCellEditor();
if (editor == null || editor.stopCellEditing()) {
manipulationlistener.deleteRows(table.getSelectedRows());
}
}
}
});
Das Problem ist, dass editor == null immer zutrifft, obwohl die Tabelle bzw. das Model editierbar sind.
Ich hab mich hier im Forum schon umgesehen (so bin ich ja auch den Code mit dem TableCell Editor gekommen), aber das Problem hatte glauch ich bis jetzt noch keiner.
Der ManipulationListener:
Java:
/*
* ManipulationListener
*/
public void deleteRows(int [] row){
for (int i = 0; i < row.length; i++){
Dataset d = (Dataset) list.get(row[i]);
dbconnection.deleteVocable(d.getIndex());
model.removeRow(row[i]);
}
}