stehe gerade vor demselben Problem wie HIER beschrieben. Versuche in einer JTable einen Zeile, also ein Objekt zu löschen.
Habe mir dazu eine Methode geschrieben, die dies in der Datenbank erledigt. Die Methode funktioniert und löscht das entsprechende Objekt.
Das Problem besteht nur darin, dass ich die Verbindung von der selektierten Zeile auf die ID (PKey) des Objektes in der Datenbank nicht hinbekomme. Wie bekomme ich es hin, dass ich die ID des Objektes, welche in der ersten Spalte der Tabelle (JTable) steht anstelle der gerade selektierten Zeile übergebe....
Erlaub dein Objekt, was in der Zeile gespeichert ist, denn irgendwie Zugriff auf die ID? Wenn du dein Event zum Löschen aufrufst, kannst du das entsprechende Objekt doch aus dem Model ziehen, in den richtigen Typ casten und dann auf die ID (evtl. über ne Getter-Methode) zugreifen.
ALso ich habe die ID jetzt mit in die JTable aufgenommen und die entsprechende Spalte ausgeblendet.
Wie bekomme ich denn Zugriff auf den Wert der selektierten Zeile in der entsprechenden Spalte um die ID auszulesen und für den Löschvorgang in der Datenbank zu verwenden?
Die 5 ist ok, die 9 der ersten Ausgabe ist ebenfalls ok. Nur sollte die zweite Ausgabe ebenfalls nur eine "9" ausspucken.
Tut sie aber nicht. Es erscheint zusätzlich eine 0!
Ich hatte in meinem ListSelectionListener eine Variable der ausgewählten Zeile (int selectedID) angelegt, auf die ich dann in meiner Tabellenansicht zugreifen kann (personenTable.listener.selectedID). Die holt sich dann dort der Löschen-Button und schickt das DELETE an die Datenbank.
Code:
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class SelectionListener implements ListSelectionListener {
PersonenTable personenTable;
int selectedID;
public SelectionListener(PersonenTable table) {
this.personenTable = table;
}
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
if (personenTable.getSelectedRow() != -1) {
int modelRow = personenTable.convertRowIndexToModel(personenTable.getSelectedRow());
selectedID = personenTable.personenTableModel.personen.get(modelRow).getID();
}
}
}
}