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
JTableconstructeur 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.
JTablein 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
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
setAutoCreateRowSortermethode: 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
setShowGridmethode: Om de kleur van de tafel helemaal te veranderen, gebruik de.
achtergrond instellenen
setGridColormethoden: 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: