De
DefaultTableModel
klassen er en underklasse av
AbstractTableModel
. Som navnet antyder er det tabellmodellen som brukes av a
når ingen tabellmodell er spesifikt definert av programmereren. StandardTableModel lagrer dataene for JTable i en
Vector
av
vektorer
.
Selv om
Vector
er en gammel Java-samling som det fremdeles støttes, og det er ikke noe problem med å bruke den med mindre tilleggskostnadene som skyldes bruk av en synkronisert samling, er et problem for Java-applikasjonen din.
Fordelen med å bruke
DefaultTableModel
over en skikk
AbstractTableModel
er du ikke trenger å kode metodene som å legge til, sette inn eller slette rader og kolonner. De eksisterer allerede for å endre dataene som er lagret i
Vector
av
Vektorer.
Dette gjør det til en rask og enkel bordmodell å implementere.
Importerklæring
import javax.swing.table. DefaultTableModel;
Constructors
De
DefaultTableModel
klassen har seks
. Hver kan brukes til å befolke
DefaultTableModel
på forskjellige måter.
Den første konstruktøren tar ingen argumenter og lager en
DefaultTableModel
som ikke har noen data, null kolonner og null rader:
DefaultTableModel defTableModel = DefaultTableModel ();
Neste konstruktør kan brukes til å spesifisere antall rader og kolonner i a
DefaultTableModel
uten data:
DefaultTableModel defTableModel = DefaultTableModel (10, 10);
Det er to konstruktører som kan brukes til å lage en
DefaultTableModel
med kolonnenavn og et spesifisert antall rader (alle inneholder nullverdier). Man bruker en
Gjenstand
matrise for å holde kolonnenavn, den andre a
Vector
:
eller
DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);
Endelig er det to konstruktører som brukes til å befolke
DefaultTableModel
med raddata sammen med kolonnenavn. En brukt
Gjenstand
matriser, den andre
vektorer
:
eller
Nyttige metoder
Slik legger du til en rad i
DefaultTableModel
bruke
addRow
metoden sammen med raddataene du vil legge til:
For å sette inn en rad bruker du
insertRow
metoden, spesifiserer radindeksen som skal settes inn, og raddataene:
For å slette en rad bruker du
removeRow
metoden, spesifiserer radindeksen som skal slettes:
defTableModel.removeRow (0);
For å få en verdi i en tabellcelle, bruk
getValueAt
metode. Hvis dataene for eksempel på rad 2, inneholder kolonne 2 en int:
int-verdi = tabModel.getValueAt (2, 2);
For å sette en verdi i en tabellcelle
setValueAt
metoden med verdien som skal settes sammen med rad- og kolonneindeksen:
defTableModel.setValueAt (8888, 3, 2);
Tips om bruk
Hvis en
JTable
opprettes ved hjelp av konstruktøren som sendes over en todimensjonal matrise som inneholder raddataene og en matrise som inneholder kolonnenavn:
da vil ikke følgende rollebesetning fungere:
En kjøretid
ClassCastException
vil bli kastet fordi i dette tilfellet
DefaultTableModel
er erklært som en
i
JTable
objekt og kan ikke støpes. Den kan bare støpes til
TableModel
grensesnitt. En vei rundt dette er å lage din egen
DefaultTableModel
og angi at den skal være modellen til
JTable
:
Og så
DefaultTableModel
defTableModel
kan brukes til å manipulere dataene i
JTable
.
Å se
DefaultTableModel
i aksjon se på
.