Hoe maak je een eenvoudige tabel in Java voor gebruik in een GUI

Arrays gebruiken om de tabelgegevens op te slaan

Een eenvoudige manier om gegevens voor de

klasse is om twee arrays te gebruiken. De eerste bevat de kolomnamen in een

matrix:

De tweede array is een tweedimensionale objectarray die de gegevens voor de tabel bevat. Deze reeks bevat bijvoorbeeld zes Olympische zwemmers:

De sleutel hier is om ervoor te zorgen dat de twee arrays hetzelfde aantal kolommen hebben.

De JTable bouwen

Zodra u over de gegevens beschikt, is het een eenvoudige taak om de tabel te maken. Bel gewoon de

JTable
constructeur en geef het de twee arrays door: U zult waarschijnlijk schuifbalken willen toevoegen om ervoor te zorgen dat de gebruiker alle gegevens kan zien. Plaats hiervoor de.
JTable
in een
JScrollPane
: Wanneer de tabel nu wordt weergegeven, ziet u de kolommen en rijen met gegevens en kunt u omhoog en omlaag scrollen.

Het JTable-object biedt een interactieve tabel. Als u dubbelklikt op een van de cellen, kunt u de inhoud bewerken - hoewel elke bewerking alleen de GUI beïnvloedt, niet de onderliggende gegevens. (Een

instagram viewer
gebeurtenis luisteraar zou moeten worden geïmplementeerd om de wijziging van gegevens aan te kunnen.).

Als u de breedte van de kolommen wilt wijzigen, plaatst u de muis op de rand van een kolomkop en sleept u deze heen en weer. Als u de volgorde van de kolommen wilt wijzigen, klikt u op een kolomkop en houdt u deze vast en sleept u deze naar de nieuwe positie.

Kolommen sorteren

Om de mogelijkheid toe te voegen om de rijen te sorteren, bel de

setAutoCreateRowSorter
methode: wanneer deze methode is ingesteld op true, kunt u op een kolomkop klikken om de rijen te sorteren op basis van de inhoud van de cellen onder die kolom.

Het uiterlijk van de tafel veranderen

Gebruik de om de zichtbaarheid van de rasterlijnen te bepalen

setShowGrid
methode: Om de kleur van de tafel helemaal te veranderen, gebruik de.
achtergrond instellen
en
setGridColor
methoden: De kolombreedten van de tabel zijn standaard gelijk. Als de container waarin de tafel zich bevindt opnieuw kan worden vergroot, zullen de breedtes van de kolommen groter en kleiner worden en wordt de container groter of kleiner. Als een gebruiker het formaat van de kolom aanpast, verandert de breedte van de kolommen aan de rechterkant om de nieuwe kolomgrootte aan te passen.

De initiële kolombreedten kunnen worden ingesteld met de methode setPreferredWidth of een kolom. Gebruik de klasse TableColumn om eerst een verwijzing naar de kolom te krijgen en vervolgens de methode setPreferredWidth om de grootte in te stellen:

Rijen selecteren

Standaard kan de gebruiker de rijen van de tabel op drie manieren selecteren:

  • Om een ​​enkele rij te selecteren, selecteert u een tabelcel in die rij.
  • Als u doorlopende, meerdere rijen wilt selecteren, sleept u de muis over meerdere rijen of selecteert u de tabelcellen met ingedrukte shift-cel.
  • Om niet-continue, meerdere rijen te selecteren, selecteert u tabelcellen terwijl u de ingedrukt houdt controle sleutel (opdrachtsleutel voor Macs).

Een tafelmodel gebruiken

Het gebruik van een paar arrays voor de gegevens van een tabel kan handig zijn als u een eenvoudige wilt Draad-gebaseerde tabel die kan worden bewerkt. Als u kijkt naar de gegevensmatrix die we hebben gemaakt, bevat deze andere gegevenstypen dan

- de

kolom bevat

en de

kolom bevat

. Toch worden beide kolommen weergegeven als tekenreeksen. Maak een tabelmodel om dit gedrag te wijzigen.

Een tabelmodel beheert de gegevens die in de tabel moeten worden weergegeven. Om een ​​tafelmodel te implementeren, kunt u een klasse maken die de

klasse:

De zes bovenstaande methoden worden gebruikt in deze stapsgewijze handleiding, maar er zijn meer methoden die worden gedefinieerd door de

klasse die nuttig zijn bij het manipuleren van de gegevens in een

voorwerp. Bij het uitbreiden van een klasse om de

u hoeft alleen de

,

en

methoden.

Maak een nieuwe klasse die de vijf hierboven getoonde methoden implementeert:

Het is logisch in dit voorbeeld voor de

klasse om de twee strings te bevatten die de tabelgegevens bevatten. Dan de

,

en

methoden kunnen de arrays gebruiken om de waarden voor de tabel op te geven. Merk ook op hoe de

methode is geschreven om niet toe te staan ​​dat de eerste twee kolommen worden bewerkt.

Nu, in plaats van de twee arrays te gebruiken om de

object, kunnen we de

klasse:

Wanneer de code wordt uitgevoerd, ziet u dat de

object gebruikt het tabelmodel omdat geen van de tabelcellen bewerkbaar is en de kolomnamen correct worden gebruikt. Als de

methode niet was geïmplementeerd, dan zouden de kolomnamen op de tabel worden weergegeven als de standaardnamen van A, B, C, D, enz.

Laten we nu eens kijken naar de methode

. Dit alleen al maakt het tafelmodel de implementatie waard omdat het de

object met het gegevenstype in elke kolom. Als u het zich herinnert, heeft de objectgegevensmatrix twee kolommen die dat niet zijn

gegevenstypen: de

kolom die ints bevat, en de

kolom die bevat

. Als u deze gegevenstypen kent, verandert de functionaliteit van de

object voor die kolommen. Het uitvoeren van de voorbeeldtabelcode met het geïmplementeerde tabelmodel betekent de

kolom zal in feite een reeks selectievakjes zijn.

Een ComboBox-editor toevoegen

U kunt aangepaste editors definiëren voor de cellen in de tabel. U kunt bijvoorbeeld een keuzelijst met invoervak ​​maken als alternatief voor de standaardtekstbewerking voor een veld.

Hier is een voorbeeld van

het land veld:

Gebruik de om de standaard editor voor de landkolom in te stellen

klasse om een ​​verwijzing naar de landkolom te krijgen, en de

methode om de

als de cel-editor: