Hallo,
ich habe zwar hier im Forum was zum Thema fireTableDataChanged und überhaupt zur JTable-Aktualisieungsproblematik
gefunden, aber ich konnte es nicht wirklich für mein aktuelles Problem umsetzen.
Ich habe eine Klasse DbInterface, die die Datenbankkommunikation übernimmt. D.h. alle UPDATEs, SELECTs via JDBC etc. werden nur in der Klasse durchgeführt.
Nun habe ich eine JTable dieser Art:
soweit so gut. Wenn ich nun einen Eintrag hinzufüge, oder eine Zeile lösche indem ich die Zeile auswähle und auf ein "löschen" Button drücke, wird über den ActionListener entsprechendes an die DbInterface-Klasse weitergegeben:
Die Datenbank aktualisiert sich auch wie gewünscht, aber die TAbelle nicht. Nun gut, fireTableDataChanged setzt ja nur ein Event in die Welt dass es zu einem Update der Tabellen kam, also war meine Idee dass ich wohl noch einen Listener dieser Art brauche:
Ich habe hier allerdings keine geeigneten Methoden der ResultSet-Klasse gefunden die mir weiterhelfen können. Ich würde jedenfalls vermuten dass ich das Modell irgendwie dazu bringen muss die Daten neuzulesen. Any idea?
ich habe zwar hier im Forum was zum Thema fireTableDataChanged und überhaupt zur JTable-Aktualisieungsproblematik
Ich habe eine Klasse DbInterface, die die Datenbankkommunikation übernimmt. D.h. alle UPDATEs, SELECTs via JDBC etc. werden nur in der Klasse durchgeführt.
Nun habe ich eine JTable dieser Art:
Code:
rsProjects = DbInterface.getAllProjects(Configurator.getSysUser());
model = new ScrollingResultSetTableModel(rsProjects);
table = new JTable(model);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
soweit so gut. Wenn ich nun einen Eintrag hinzufüge, oder eine Zeile lösche indem ich die Zeile auswähle und auf ein "löschen" Button drücke, wird über den ActionListener entsprechendes an die DbInterface-Klasse weitergegeben:
Code:
DbInterface.deleteProject(projectID);
model.fireTableDataChanged();
table.repaint();
Die Datenbank aktualisiert sich auch wie gewünscht, aber die TAbelle nicht. Nun gut, fireTableDataChanged setzt ja nur ein Event in die Welt dass es zu einem Update der Tabellen kam, also war meine Idee dass ich wohl noch einen Listener dieser Art brauche:
Code:
model.addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent evt) {
try {
rsProjects...?
} catch (SQLException e) {
e.printStackTrace();
}
}
});
Ich habe hier allerdings keine geeigneten Methoden der ResultSet-Klasse gefunden die mir weiterhelfen können. Ich würde jedenfalls vermuten dass ich das Modell irgendwie dazu bringen muss die Daten neuzulesen. Any idea?