Java Reference
In-Depth Information
Wie gewohnt wird die Tabelle in der
initGUI
erstellt. Die Trennung von optischer Dar-
stellung und Datenhaltung erkennen Sie daran, dass zuerst ein
TableModel
erzeugt wird,
das die Daten bereithält. Anschließend wird die
JTable
erzeugt, in den Frame eingefügt,
und das TableModel wird an die Tabelle übergeben.
Das TableModel wird als
DefaultTableModel
erzeugt. Dieses TableModel ist so konzi-
piert, dass es mit Daten umgehen kann, die als
Vector
oder als
Array
vorliegen, und dass
es die dafür geeigneten Methoden bereitstellt. Für viele Anwendungen ist dieses Modell
vollkommen ausreichend. Für spezielle Anforderungen können Sie an die eigenen
Anforderungen angepasste Modelle von der Klasse
AbstractTableModel
ableiten.
Die Klasse
Vector
kann wie die neuere Klasse
ArrayList
verwendet werden, die in
Abschnitt 11.2
erläutert wurde. Die Klasse
Vector
war früher gebräuchlicher und wird
deshalb in
DefaultTableModel
noch verwendet. Die folgenden Beispiele zeigen, dass Sie
häufig mit einem einfachen
Array
auskommen.
Dem Konstruktor des
DefaultTableModel
werden zwei Arrays übergeben, die dabei auch
gleich erzeugt werden. In dem ersten zweidimensionalen Array werden die Tabellenda-
ten gespeichert, während das zweite Array die Spaltennamen aufnimmt. Ihnen ist
sicher aufgefallen, dass die Spaltenüberschriften in der Vorschau nicht angezeigt wer-
den. Das sollten wir gleich ändern. Was die dafür erforderliche Veränderung mit der
Darstellung der Spaltenüberschriften zu tun hat, ist vielleicht nicht ganz einsichtig, aber
da sie sowieso sinnvoll ist, soll Sie das nicht weiter stören. Damit bei größeren Tabellen
Scrollbalken eingeblendet werden, betten Sie die Tabelle in eine
ScrollPane
-Kompo-
nente ein. Sie können das
ScrollPane
nachträglich in den Frame einbauen und in der
Ansicht Outline die Table auf das
ScrollPane
ziehen, oder Sie löschen die Tabelle noch-
mal und fügen zuerst das
ScrollPane
ein, um darauf dann die Table abzulegen.
15
Die Vorschau zeigt nun neben den Tabellendaten auch die Spaltenüberschriften an.
Ändern Sie nun das Array-Literal für die Spaltenbeschriftungen im Quellcode so ab, dass
die Tabelle auf die Aufnahme von Stundenplandaten vorbereitet ist:
new String[] { "Stunde","Montag","Dienstag","Mittwoch","Donnerstag","Freitag" }
Sie können in der Vorschau verfolgen, dass die Tabellengröße der Anzahl der Spalten-
überschriften angepasst wird. Es stellt auch kein Problem dar, dass das Daten-Array klei-
ner ist. Passen Sie nun noch das Daten-Array so an, dass für jeden Tag zehn
Unterrichtstunden in die Tabelle passen:
new String[][]
{{"1"},{"2"},{"3"},{"4"},{"5"},{"6"},{"7"},{"8"},
{"9"},{"10"}}