Hallo zusammen,
ich habe eine Frage zur Aktualisierung eines JTable Objektes. Hier kurz die Beschreibung meines Problems.
Ich habe ein Programm (Swing) mit dem ich mich nach Eingabe von Oracle DB Zugangsdaten (Host, Port, SID) an die Datenbank anbinde um verschiedene Aktionen auszuführen, wie z.B. Stress Tests oder das auslesen von Patch Informationen. Für letzeres rufe ich über ein JMenu ein JDialog auf in dem ich ein JTable erstelle. Dem JTable übergebe ich beim erstellen ein 2D Array:
In der Methode "getTablePatchInfoArrayData()" wird der Connect zur Datenbank durchgeführt und das Query zum ermitteln der Patch Infos. Die Ergebnisse packe ich dann in ein 2D Array und gebe das dann zurück.
Wenn ich das Programm aufrufe, den Connect zur Datenbank teste und anschließend den Button "Patch Info" drücke erhalte ich auch den Dialog mit dem JTable Objekt und den entsprechenden Daten. Soweit alles gut.
Wenn ich allerdings jetzt z.B. andere DB Zugangsdaten eingebe, ohne das Programm zu beenden, und dann erneut "Patch Info" aufrufe, hat das JTable Objekt weiterhin die alten Daten
Frage:
Was muss ich programmieren damit beim erneuten Aufruf des JDialog das JTable Objekt erneut die Daten von "getTablePatchInfoArrayData()" abholt und darstellt?
Workaround:
Als Workaround lösche ich JDialog incl. JPanel und JTable beim Aufruf wenn es diese Objekte schon gibt. Das führt dazu das alles noch einmal erstellt wird, was natürlich dauert und meiner Meinung nach nicht sehr elegant ist Ich gehe davon aus das es weitaus bessere Lösungen gibt.
Danke schon mal für Eure Tipps.
Gruß
Ralf
ich habe eine Frage zur Aktualisierung eines JTable Objektes. Hier kurz die Beschreibung meines Problems.
Ich habe ein Programm (Swing) mit dem ich mich nach Eingabe von Oracle DB Zugangsdaten (Host, Port, SID) an die Datenbank anbinde um verschiedene Aktionen auszuführen, wie z.B. Stress Tests oder das auslesen von Patch Informationen. Für letzeres rufe ich über ein JMenu ein JDialog auf in dem ich ein JTable erstelle. Dem JTable übergebe ich beim erstellen ein 2D Array:
Java:
private JTable getJTablePatchInfo() {
if(jTablePatchInfo == null) {
jTablePatchInfo = new JTable(getArray2dPatchInfo(), getTableArrayTitlePatchInfo("PATCH_ID","ACTION","STATUS","DESCRIPTION"));
jTablePatchInfo.setBounds(0, 0, 400, 400);
jTablePatchInfo.getTableHeader().setFont(new java.awt.Font("Dialog",1,14));
jTablePatchInfo.getTableHeader().setForeground(new java.awt.Color(206,91,39));
jTablePatchInfo.getColumnModel().getColumn(0).setPreferredWidth(10);
jTablePatchInfo.getColumnModel().getColumn(1).setPreferredWidth(10);
jTablePatchInfo.getColumnModel().getColumn(2).setPreferredWidth(10);
jTablePatchInfo.getColumnModel().getColumn(3).setPreferredWidth(500);
TableCellRenderer rendererFromHeader = jTablePatchInfo.getTableHeader().getDefaultRenderer();
JLabel headerLabelPatchInfo = (JLabel) rendererFromHeader;
headerLabelPatchInfo.setHorizontalAlignment(JLabel.CENTER);
}
return jTablePatchInfo;
}
Wenn ich das Programm aufrufe, den Connect zur Datenbank teste und anschließend den Button "Patch Info" drücke erhalte ich auch den Dialog mit dem JTable Objekt und den entsprechenden Daten. Soweit alles gut.
Wenn ich allerdings jetzt z.B. andere DB Zugangsdaten eingebe, ohne das Programm zu beenden, und dann erneut "Patch Info" aufrufe, hat das JTable Objekt weiterhin die alten Daten
Frage:
Was muss ich programmieren damit beim erneuten Aufruf des JDialog das JTable Objekt erneut die Daten von "getTablePatchInfoArrayData()" abholt und darstellt?
Workaround:
Als Workaround lösche ich JDialog incl. JPanel und JTable beim Aufruf wenn es diese Objekte schon gibt. Das führt dazu das alles noch einmal erstellt wird, was natürlich dauert und meiner Meinung nach nicht sehr elegant ist Ich gehe davon aus das es weitaus bessere Lösungen gibt.
Danke schon mal für Eure Tipps.
Gruß
Ralf