Computerwissenschaften

So erstellen Sie eine einfache Tabelle in Java zur Verwendung in einer GUI

Java  bietet eine nützliche Klasse namens JTable, mit der Sie Tabellen erstellen können, wenn Sie grafische Benutzeroberflächen mit den Komponenten der Swing-API von Java entwickeln. Sie können Ihren Benutzern ermöglichen, die Daten zu bearbeiten oder einfach anzuzeigen. Beachten Sie, dass die Tabelle keine Daten enthält – es handelt sich ausschließlich um einen Anzeigemechanismus.

Diese Schritt-für-Schritt-Anleitung zeigt, wie Sie die Klasse verwenden

um eine einfache Tabelle zu erstellen.

Hinweis:  Wie bei jeder Swing-GUI müssen Sie einen Container erstellen, in dem die angezeigt werden soll

. Wenn Sie sich nicht sicher sind, wie Sie dies tun sollen, schauen Sie sich das an

.

 

Verwenden von Arrays zum Speichern der Tabellendaten

Eine einfache Möglichkeit, Daten für die

Klasse ist, zwei Arrays zu verwenden. Der erste enthält die Spaltennamen in a

Array:

Das zweite Array ist ein zweidimensionales Objektarray, das die Daten für die Tabelle enthält. Dieses Array umfasst beispielsweise sechs olympische Schwimmer:

Der Schlüssel hier ist, sicherzustellen, dass die beiden Arrays die gleiche Anzahl von Spalten haben.

 

Erstellen der JTable

Sobald Sie die Daten eingerichtet haben, ist es eine einfache Aufgabe, die Tabelle zu erstellen. Rufen Sie einfach die

JTable

Konstrukteur

JTable

in ein

JScrollPane

 

Das JTable-Objekt bietet eine interaktive Tabelle. Wenn Sie auf eine der Zellen doppelklicken, können Sie den Inhalt bearbeiten – obwohl jede Bearbeitung nur die GUI betrifft, nicht die zugrunde liegenden Daten. (Ein Ereignis-Listener müsste implementiert werden, um die Änderung von Daten zu handhaben.)

Um die Breite der Spalten zu ändern, bewegen Sie die Maus über den Rand einer Spaltenüberschrift und ziehen Sie sie vor und zurück. Um die Reihenfolge der Spalten zu ändern, klicken und halten Sie eine Spaltenüberschrift und ziehen Sie sie an die neue Position.

 

Spalten sortieren

Um die Möglichkeit zum Sortieren der Zeilen hinzuzufügen, rufen Sie die auf

setAutoCreateRowSorter

 

Ändern des Erscheinungsbilds der Tabelle

Verwenden Sie die Taste, um die Sichtbarkeit der Gitterlinien zu steuern

setShowGrid
Hintergrund einstellen

und

setGridColor

Die anfänglichen Spaltenbreiten können mit der setPreferredWidth-Methode oder einer Spalte festgelegt werden. Verwenden Sie die TableColumn-Klasse, um zuerst einen Verweis auf die Spalte abzurufen, und dann die setPreferredWidth-Methode, um die Größe festzulegen:

 

Zeilen auswählen

Standardmäßig kann der Benutzer die Zeilen der Tabelle auf drei Arten auswählen:

  • Um eine einzelne Zeile auszuwählen, wählen Sie eine Tabellenzelle in dieser Zeile aus.
  • Um fortlaufende, mehrere Zeilen auszuwählen, ziehen Sie die Maus über mehrere Zeilen oder wählen Sie die Tabellenzellen mit gedrückter Umschaltzelle aus.
  • Um nicht fortlaufende, mehrere Zeilen auszuwählen, wählen Sie Tabellenzellen aus, während Sie die Steuertaste ( Befehlstaste für Macs) gedrückt halten .

 

Verwenden eines Tabellenmodells

Die Verwendung einiger Arrays für die Daten einer Tabelle kann hilfreich sein, wenn Sie eine einfache String- basierte Tabelle wünschen, die bearbeitet werden kann. Wenn Sie sich das von uns erstellte Datenarray ansehen, enthält es andere Datentypen als

– das

Spalte enthält

und das

Spalte enthält

. Beide Spalten werden jedoch als Zeichenfolgen angezeigt. Erstellen Sie ein Tabellenmodell, um dieses Verhalten zu ändern.

Ein Tabellenmodell verwaltet die Daten, die in der Tabelle angezeigt werden sollen. Um ein Tabellenmodell zu implementieren, können Sie eine Klasse erstellen, die das erweitert

Klasse:

Die sechs oben genannten Methoden sind diejenigen, die in dieser Schritt-für-Schritt-Anleitung verwendet werden. Es gibt jedoch weitere Methoden, die durch die definiert werden

Klasse, die bei der Bearbeitung der Daten in a nützlich sind

Objekt. Wenn Sie eine Klasse erweitern, um die zu verwenden

Sie müssen nur die implementieren

,

und

Methoden.

Erstellen Sie eine neue Klasse, die die oben gezeigten fünf Methoden implementiert:

In diesem Beispiel macht es Sinn für die

Klasse für die beiden Zeichenfolgen, die die Tabellendaten enthalten. Dann ist die

,

und

Methoden können die Arrays verwenden, um die Werte für die Tabelle bereitzustellen. Beachten Sie auch, wie die

Es wurde eine Methode geschrieben, um die ersten beiden zu bearbeitenden Spalten nicht zuzulassen.

Anstatt jetzt die beiden Arrays zum Erstellen des zu verwenden

Objekt können wir das verwenden

Klasse:

Wenn der Code ausgeführt wird, sehen Sie, dass die

Das Objekt verwendet das Tabellenmodell, da keine der Tabellenzellen bearbeitet werden kann und die Spaltennamen korrekt verwendet werden. Wenn die

Wenn die Methode nicht implementiert wurde, werden die Spaltennamen in der Tabelle als Standardnamen für A, B, C, D usw. angezeigt.

Betrachten wir nun die Methode

. Dies allein macht das Tabellenmodell die Implementierung wert, da es das bereitstellt

Objekt mit dem in jeder Spalte enthaltenen Datentyp. Wenn Sie sich erinnern, enthält das Objektdatenarray zwei Spalten, die nicht vorhanden sind

Datentypen: die

Spalte, die Ints enthält, und die

Spalte, die enthält

. Wenn Sie diese Datentypen kennen, ändert sich die Funktionalität von

Objekt für diese Spalten. Das Ausführen des Beispieltabellencodes mit dem implementierten Tabellenmodell bedeutet Folgendes:

Spalte wird tatsächlich eine Reihe von Kontrollkästchen sein.

 

Hinzufügen eines ComboBox-Editors

Sie können benutzerdefinierte Editoren für die Zellen in der Tabelle definieren. Sie können beispielsweise ein Kombinationsfeld als Alternative zur Standardtextbearbeitung für ein Feld festlegen.

Hier ist ein Beispiel mit

das Länderfeld:

Verwenden Sie die Option, um den Standardeditor für die Länderspalte festzulegen

Klasse, um einen Verweis auf die Länderspalte zu erhalten, und die

Methode zum Einstellen der

als Zelleneditor:

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.