Hi und frohes neues Jahr!
Ich habe ein DefaultTableModel und ein JTable, dass ich mit Daten aus einer DB per Vectoren fülle.
Möchte ich nun ein Datensatz hinzufügen, funktioniert das auch, allerdings aktualisiert sich die Tabelle nicht. D.h. dass der neue Datensatz nicht zu sehen ist.
Bei mir ist das so, dass Ich eine "Hauptklasse" (TreeDemo) habe, auf der ich ein SplitPane habe (leftp = JTree, rightp = CardLayout).
Bei auswahl eines Knotens im Tree, erhalte ich rechts im CardLayout die entsprechende Ansicht einer Klasse (AirportManage).
In AiportManage hab ich ein JTable, welches sich Daten aus einer DB holt.
Hier habe ich die Möglichkeit einen neuen Airport anzulegen (Klasse "AirportCreate" öffnet sich).
Lege ich nun einen neuen Datensatz an, wird dieser auch in der Datenbank gespeichert, aber wie gesagt, nicht im JTable angezeigt.
Hier mein JTable in AirportManage
in Airport habe ich es im ActionListener folgendermaßen versucht
So klappt es aber leider nicht.
Habt ihr eine Idee, wie ich es hinkriegen kann, dass sich die Tabelle korrekt aktualisiert/refreshed?
Ich habe ein DefaultTableModel und ein JTable, dass ich mit Daten aus einer DB per Vectoren fülle.
Möchte ich nun ein Datensatz hinzufügen, funktioniert das auch, allerdings aktualisiert sich die Tabelle nicht. D.h. dass der neue Datensatz nicht zu sehen ist.
Bei mir ist das so, dass Ich eine "Hauptklasse" (TreeDemo) habe, auf der ich ein SplitPane habe (leftp = JTree, rightp = CardLayout).
Bei auswahl eines Knotens im Tree, erhalte ich rechts im CardLayout die entsprechende Ansicht einer Klasse (AirportManage).
In AiportManage hab ich ein JTable, welches sich Daten aus einer DB holt.
Hier habe ich die Möglichkeit einen neuen Airport anzulegen (Klasse "AirportCreate" öffnet sich).
Lege ich nun einen neuen Datensatz an, wird dieser auch in der Datenbank gespeichert, aber wie gesagt, nicht im JTable angezeigt.
Hier mein JTable in AirportManage
Java:
// Vector für Spaltenüberschrift mit Werten belegen
columnNames = new Vector<String>();
columnNames.add("Int. Kürzel");
columnNames.add("Name");
columnNames.add("Stadt");
columnNames.add("Land");
// Vector mit allen Airports aus DB
Vector<Airport> allAirports = admin.getAllAirports();
// Vector mit nachfolgender for-Schleife mit Werten für JTable belegen
rowData = new Vector<Vector>();
for(int i = 0; i<allAirports.size(); i++) {
Vector<String> TempString = new Vector<String>();
String internationalId = allAirports.get(i).getInternationalId();
TempString.addElement(internationalId);
String portName = allAirports.get(i).getPortName();
TempString.addElement(portName);
String portCity = allAirports.get(i).getPortCity();
TempString.addElement(portCity);
String portCountry = allAirports.get(i).getPortCountry();
TempString.addElement(portCountry);
rowData.addElement(TempString);
}
model = new DefaultTableModel( rowData, columnNames );
table = new JTable(model);
table.setModel(model);
table.setAutoCreateRowSorter(true);
// table.setAutoResizeMode( JTable.AUTO_RESIZE_OFF );
table.getColumnModel().getColumn(0).setPreferredWidth(10);
table.getColumnModel().getColumn(1).setPreferredWidth(150);
table.getColumnModel().getColumn(2).setPreferredWidth(100);
table.getColumnModel().getColumn(3).setPreferredWidth(100);
constraints.gridx = 0;
constraints.gridy = 2;
constraints.gridwidth = 3;
// constraints.fill = GridBagConstraints.HORIZONTAL;
// constraints.weighty = 1.0;
table.setPreferredScrollableViewportSize(new Dimension(550,200));
table.setVisible(true);
in Airport habe ich es im ActionListener folgendermaßen versucht
Java:
button_Anlegen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e){
try {
admin.createAirport(textfield2.getText(), textfield1.getText(), textfield3.getText(), textfield4.getText());
DefaultTableModel model = new DefaultTableModel(am.rowData,am.columnNames);
am.table.setModel(model);
model.fireTableDataChanged();
((CardLayout) td.rightp.getLayout()).show(td.rightp, "AirportM");
} catch (RemoteException ex) {
Logger.getLogger(AirportCreate.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
So klappt es aber leider nicht.
Habt ihr eine Idee, wie ich es hinkriegen kann, dass sich die Tabelle korrekt aktualisiert/refreshed?