Hallo,
vorweg, hab einiges im Netz gefunden aber nichts was mir weitergeholfen hat.
ich hole daten aus einer DB
und mit den zwei methoden lege ich sie in den jtable, funktioniert alles wunderbar.
datensätze hinzufügen funktioniert auch wenn die transaktion abgeschlossen ist trage ich per "hand" den datensatz nach
nun zu meiner frage, da wo ich schon am verzweifeln bin!
wenn ich datensätze ändern will wie bekomm ich die änderung sofort in den table??
ich gehe wie folgt vor
ich hole erstmal die daten aus der db und gebe sie in einem fenster mir textfields aus
wenn ich jetzt die textffields berarbeite sprich text neu eingebe bestätige ich die eingabe über einen button und die daten IN DER DB wurden geändert jedoch die änderung im table bekomm ich nicht hin!
ich arbeite mit einem DEFAULTTABLEMODEL
ich habs schon mit dem model.setValue(Object[], row, col) check das aber irgendie nicht!:bahnhof:
hoffe ich hab das einigermaßen verständlich erklärt.
gruss thomas
vorweg, hab einiges im Netz gefunden aber nichts was mir weitergeholfen hat.
ich hole daten aus einer DB
Java:
public void createJTable() {
spalten = new Vector<String>();
daten = new Vector<Vector<Object>>();
model = new DefaultTableModel(daten, spalten);
// Hole Daten aus DB
createTableData();
//das Model dem Table übergeben
table = new JTable(model);
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.setAutoCreateRowSorter(true);
//Zellen können nicht mehr bearbeitet werden.
table = new JTable(model) {
public boolean isCellEditable(int row, int column) {
return false;
}
public Class getColumnClass(int columnIndex){
if (columnIndex == 4)
return Boolean.class;
else if (columnIndex == 4)
return Integer.class;
return String.class;
}
};
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent me){
selectedID = (int) (int) table.getValueAt(table.getSelectedRow(), 0);
System.out.println(selectedID); // test
}
});
table.setFillsViewportHeight(true);
//Texte in Table zentriert anzeigen
DefaultTableCellRenderer dtcr = new DefaultTableCellRenderer();
dtcr.setHorizontalAlignment(JLabel.CENTER);
DefaultTableCellRenderer defaultRenderer = (DefaultTableCellRenderer) table
.getDefaultRenderer(Object.class);
defaultRenderer.setHorizontalAlignment(JLabel.CENTER);
}
public void createTableData() {
try {
Statement stmt = getConnection().createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM test");
ResultSetMetaData rsmd = result.getMetaData();
columns = rsmd.getColumnCount();
// Columns Namen
for (int i = 1; i <= columns; i++) {
spalten.addElement(rsmd.getColumnName(i));
}
// row daten
while (result.next()) {
Vector<Object> row = new Vector<Object>(columns);
for (int i = 1; i <= columns; i++) {
row.addElement(result.getObject(i));
}
daten.addElement(row);
}
result.close();
stmt.close();
} catch (SQLException sqle) {
}
}
datensätze hinzufügen funktioniert auch wenn die transaktion abgeschlossen ist trage ich per "hand" den datensatz nach
Java:
model.addRow(new Object[]{maxID, tfvorname.getText(), tfnachname.getText(),tfDate.getText(), box.isSelected()});
nun zu meiner frage, da wo ich schon am verzweifeln bin!
wenn ich datensätze ändern will wie bekomm ich die änderung sofort in den table??
ich gehe wie folgt vor
ich hole erstmal die daten aus der db und gebe sie in einem fenster mir textfields aus
wenn ich jetzt die textffields berarbeite sprich text neu eingebe bestätige ich die eingabe über einen button und die daten IN DER DB wurden geändert jedoch die änderung im table bekomm ich nicht hin!
ich arbeite mit einem DEFAULTTABLEMODEL
ich habs schon mit dem model.setValue(Object[], row, col) check das aber irgendie nicht!:bahnhof:
hoffe ich hab das einigermaßen verständlich erklärt.
gruss thomas