AbstractTableModel gegen DefaultTableModel
AbstractTableModel ist eine leichte Art, Daten zu verwenden, die bereits tabellarisch sind.
Indem wir drei einfache Methoden (getValueAt, getColumnCount und getRowCount) überschreiben, ist das Tabellenmodell vorhanden. AbstractTableModel liefert auch Ereignisauslösungsmethoden wie fireTableDataChanged, fireRowsUpdated, und so weiter …
Die interne Darstellung der Daten kann statisch sein (freie Speicherwahl), oder dynamisch, so daß leistungsfähige Anwendungen resultieren. Durch die Anwendung eines 'Cache' (im Vergleich zur Erzeugung des Inhalts) für die getValueAt Methode, wird die Leistung erheblich in der Anzeige und der Scrollability verbessert.
Ohne es im JTable Konstruktor zu spezifizieren, ist DefaultTableModel das benutzte "default" Tabellenmodell. DefaultTableModel's interne Darstellung der Daten ist ein Vektor von Vektoren. Dies ist gut, wenn die verwendeten Daten nicht bereits tabellarisch sind, da die Umwandlung der ursprünglichen Daten eine Performance Frage ist. Sobald die Daten aber eingestellt sind, sollte die Leistung von Scrollen und Anzeige gut sein, da die Daten cachiert sind. Wenn die Daten umfangreich sind, oder wenn sie bereits cachiert sind (wie z.B. durch eine Datenbank) dann könnte die Reproduktion der cachierten Daten jedoch eine unangebrachte Wahl sein.
Ein Vorteil der Anwendung von DefaultTableModel ist seine Mutabilität. Die Implementierung von setValueAt und seine Zeile/Spalte Modifiziermethoden einschließlich hinzufügen und entfernen, erlauben eine einfache Änderung der Daten nachdem die Tabelle erzeugt wurde. Ein anderer Vorteil ist, dass der Entwurf gut ist, weil alles lokal gekapselt ist.