TableModel (Java API)
Aus Byte-Welt Wiki
Version vom 18. Februar 2007, 20:57 Uhr von Beni (Diskussion)
Ein TableModel enthält Daten, welche von einer JTable angezeigt werden. Das TableModel stellt eine Tabelle, eine gitterförmige Datenstruktur, dar.
Ein TableModel kommuniziert mit seiner Aussenwelt über TableModelListener. In einem MVC-Pattern entspricht es dem M.
Methoden
TableModel ist ein Interface welches folgende Methoden vorschreibt:
- getColumnCount liefert die Anzahl Spalten der Tabelle.
- getRowCount liefert die Anzahl Zeilen der Tabelle.
- getColumnName liefert den Namen einer Spalte. Der Name wird über der Spalte in einem speziellen Feld (dem Header) angezeigt.
- getColumnClass liefert den Typ der Einträge einer Spalte. Je nach Typ kann die JTable die Spalte anders darstellen. Boolsche Werte werden z.B. mit einer JCheckBox dargestellt, Strings hingegen als Text.
Im folgenden Stück Code wird für die erste Spalte der Typ String, für die zweite Spalte der Typ Integer angegeben. <code=java>public Class<?> getColumnClass( int column ){
switch( column ){ case 0: return String.class; case 1: return Integer.class; default: throw new IllegalArgumentException( "unknown column: " + column ); }
}</code=java>
- getValueAt liefert den Wert einer Zelle. Der Typ dieses Wertes muss der Angabe von getColumnClass entsprechen.
- isCellEditable sagt der Tabelle, ob eine bestimmte Zelle durch den Benutzer bearbeitet werden darf. Die Methode getColumnClass bestimmt masgeblich, wie die Zelle bearbeitet wird; z.B. wird für eine Spalte mit Strings ein Textfeld angeboten.
- setValueAt ist das Gegenstück zu getValueAt, mit dieser Methode wird der Wert einer Zelle gesetzt. Diese Methode wird von der JTable aufgerufen, nachdem ein TableCellEditor einen Wert verändert hat.
- addTableModelListener fügt dem Model einen TableModelListener hinzu. Dieser Listener muss immer benachrichtigt werden, wenn sich Daten des Models verändern. Mit Hilfe des TableModelEvents kann eine genau Angabe gemacht werden, welcher Teil des Models sich verändert hat. z.B. könnte eine Zeile gelöscht worden sein, oder der Wert einer Zelle wurde verändert.
- removeTableModelListener entfernt einen früher hinzugefügten TableModelListener
Implementationen
Es gibt zwei oft benutze Implementationen:
- Das AbstractTableModel kann als Grundlage eines eigenen TableModels dienen. Insbesondere bietet es Methoden für Verwaltung der TableModelListener an.
- Das DefaultTableModel ist ein einfaches Model, bei dem Zellen verändert, Spalten und Zeilen hinzugefügt oder gelöscht werden können. Für die meisten Anwendungen die nur einige Daten anzeigen möchten, sollte dieses Model vollständig ausreichen.