Brug af arrays til at gemme tabeldata
En enkel måde at levere data til
klasse er at bruge to arrays. Den første indeholder kolonnenavnene i a
vifte:
Den anden matrix er en to-dimensionel objektgruppe, der indeholder dataene til tabellen. Denne række inkluderer for eksempel seks olympiske svømmere:
Nøglen her er at sikre, at de to arrays har det samme antal kolonner.
Konstruktion af JTable
Når du først har dataene på plads, er det en simpel opgave at oprette tabellen. Bare ring til
JTablekonstruktør og videregive de to arrays: Du vil sandsynligvis tilføje rullebjælker for at sikre, at brugeren kan se alle dataene. For at gøre det skal du placere.
JTabletil en
JScrollPane: Når tabellen nu vises, vil du se kolonnerne og rækkerne med data og har mulighed for at rulle op og ned.
JTable-objektet giver en interaktiv tabel. Hvis du dobbeltklikker på en af cellerne, vil du være i stand til at redigere indholdet - selvom enhver redigering kun påvirker GUI, ikke de underliggende data. (An begivenhedslytter skulle implementeres for at håndtere ændring af data.).
For at ændre bredden på kolonnerne skal du holde musen på kanten af en kolonneoverskrift og trække den frem og tilbage. Hvis du vil ændre rækkefølgen af kolonnerne, skal du klikke og holde en kolonneoverskrift og derefter trække den til den nye position.
Sortering af kolonner
For at tilføje muligheden for at sortere rækkerne skal du ringe til
setAutoCreateRowSortermetode: Når denne metode er indstillet til sand, kan du klikke på en kolonneoverskrift for at sortere rækkerne i henhold til indholdet af cellerne under den kolonne.
Ændring af bordets udseende
Hvis du vil kontrollere netlinjernes synlighed, skal du bruge
setShowGridmetode: For at ændre bordets farve helt, skal du bruge.
setBackgroundog
setGridColormetoder: Tabelens kolonnebredder er som standard lige. Hvis beholderen, som tabellen er i, kan genudnyttes, vil bredden af søjlerne udvide sig og krympe, og containeren bliver større eller mindre. Hvis en bruger ændrer størrelsen på kolonnen, ændres bredden på kolonner til højre for at imødekomme den nye kolonnestørrelse.
De oprindelige kolonnebredder kan indstilles ved hjælp af metoden setPreferredWidth eller en kolonne. Brug klassen TableColumn til først at få en henvisning til kolonnen, og derefter metoden setPreferredWidth til at indstille størrelsen:
Valg af rækker
Som standard kan brugeren vælge rækkerne i tabellen på en af tre måder:
- For at vælge en enkelt række skal du vælge en tabelcelle i den række.
- Hvis du vil vælge kontinuerlige, flere rækker, skal du trække musen over flere rækker eller vælge tabelcellerne med skiftecellen nede.
- Hvis du vil vælge ikke-kontinuerlige, flere rækker, skal du vælge tabelceller, mens du holder nede kontrolnøgle (kommandotast til Mac-computere).
Brug af en tabelmodel
Brug af et par matriser til dataene i en tabel kan være nyttigt, hvis du vil have en enkel Snor-baseret tabel, der kan redigeres. Hvis du ser på det datasæt, vi oprettede, indeholder det andre datatyper end
- det
kolonne indeholder
og
kolonne indeholder
. Alligevel vises begge disse kolonner som strenge. For at ændre denne opførsel skal du oprette en tabelmodel.
En tabelmodel administrerer de data, der skal vises i tabellen. For at implementere en tabelmodel kan du oprette en klasse, der udvider
klasse:
De seks ovennævnte metoder er dem, der bruges i denne trin-for-trin-guide, men der er flere metoder defineret af
klasse, der er nyttige til at manipulere dataene i en
objekt. Når du udvider en klasse til at bruge
du skal kun implementere
,
og
metoder.
Opret en ny klasse, der implementerer disse fem metoder, der er vist ovenfor:
Det giver mening i dette eksempel for
klasse for at holde de to strenge, der indeholder tabeldata. Derefter
,
og
metoder kan bruge matriserne til at angive værdierne for tabellen. Bemærk også, hvordan
Der er skrevet metode til at forhindre de to første kolonner, der skal redigeres.
I stedet for at bruge de to arrays til at oprette
objekt, kan vi bruge
klasse:
Når koden kører, vil du se, at
objektet bruger tabellen model, fordi ingen af tabellen celler kan redigeres, og kolonnenavne bruges korrekt. Hvis
metoden ikke var implementeret, så vil kolonnenavnene på tabellen vises som standardnavne på A, B, C, D osv.
Lad os nu overveje metoden
. Dette alene gør tabelmodellen værd at implementere, fordi den giver
objekt med datatypen indeholdt i hver kolonne. Hvis du husker det, har objektdataarrayet to kolonner, der ikke er
datatyper:
kolonne, der indeholder ints, og
kolonne, der indeholder
. At kende disse datatyper ændrer funktionaliteten leveret af
objekt til disse kolonner. At køre prøvekodekoden med den implementerede tabelmodel betyder
kolonne vil faktisk være en række afkrydsningsfelter.
Tilføjelse af en ComboBox-editor
Du kan definere brugerdefinerede redaktører til cellerne i tabellen. For eksempel kan du gøre en kombinationsboks til et alternativ til standardtekstredigering for et felt.
Her er et eksempel ved hjælp af
landets felt:
Hvis du vil indstille standardeditoren for kolonnen land, skal du bruge
klasse for at få en henvisning til kolonnen land og
metode til at indstille
som celleeditor: