JTable Daten aktualisieren mit neuem TableModel
-
Hallo zusammen,
bin wieder ein wenig am Programmieren. Mein Projekt (ein kleines Auswertungsprogramm
meines fuer den rest des Monats zur Verfuegung stehenden Budgets) ist soweit fertig.Nun bin ich am optimieren. Also unnoetige Zeilen entfernen (nein die Kommentare meine
ich nicht) oder mehrere Codezeilen in wenigen zusammenfassen so weit es geht.Nun bin ich an der Stelle in der ich bisher in der Tabelle die Daten, auf Grund eines neuen
wertes in einem JTextField, erneuere. Dies geschieht momentan immer mit dem
neu setzten des TableModels fuer die Tabelle. Nun habe ich mir mal gedanken ueber die
Speichernutzung des Rechners gemacht. Den fuer ein neues Modell und dessen Daten wird
ja wieder zusaetzlich Platz benoetigt, wenn das Array das die Daten zur Anzeige beinhaltet
sehr gross sein sollte. Aber was ist mit dem Object im Speicher welches das
vorherige Modell darstellt. Wird der irgendwann wieder freigegeben? (eventuell durch den
GarbageCollector)Nun habe ich nach einer Moeglichkeit gesucht an statt der Tabelle ein neues Modell zuzuweisen,
lieber die Daten im Array des alten Modelles zu aendern/neuschreiben und danach die
Tabelle sich selbst aktualisieren zu lassen.Dafuer habe ich in meinem Tabellen Modell (welches "extends AbstractTableModel" ist) eine
public void Methode eingefuegt, welcher ein neuer Wert uebergeben wird, anhand dessen
die Daten des Arrays aktualisiert werden.public void aktualisieren(String strDatum) { daten = lese_werte(strDatum, iOption); fireTableDataChanged(); }
Leider kann ich auf diese Methode nicht zugreifen. In der Class in der die Tabelle erzeugt wird
und sich dessen Instanz befindent (Name table ) komme ich an die Methode mittable.<name meiner Methode>
nicht herran
auch ein
table.getModel().<name meiner Mehtode>
funktioniert nicht.
-
Ja, der Speicher des vorherigen Modells wird freigegeben, es ist also kein Speicherungetüm das du erzeugt hast sondern ein Performanceungetüm.
Dein bestimmtes Modell erhältst du durch casten:
MyTableModel model = (MyTableModel)table.getModel(); model.aktualisieren(textBox.getText());
MfG SideWinder
-
Hat super geklappt, danke!
Dann kann ich das ja gleich mal ein paar andere Projekte entsprechend
umstrukturieren.