Vida

Visão geral do DefaultTableModel

Visão geral do DefaultTableModel

o

DefaultTableModelclasse é uma subclasse do

AbstractTableModel. Como o nome sugere, é o modelo de tabela usado por uma JTable quando nenhum modelo de tabela é definido especificamente pelo programador. O DefaultTableModel armazena os dados para a JTable em um

Vetordo

Vetores.

Apesar de

Vetoré uma coleção Java herdada, ainda é suportada e não há problema em usá-la, a menos que a sobrecarga adicional causada pelo uso de uma coleção sincronizada seja um problema para seu aplicativo Java.

A vantagem de usar o

DefaultTableModelsobre um costume

AbstractTableModelé que você não precisa codificar os métodos como adicionar, inserir ou excluir linhas e colunas. Eles já existem para alterar os dados mantidos no

Vetordo

Vetores.Isso o torna um modelo de tabela rápido e fácil de implementar.

Declaração de importação

import javax.swing.table.DefaultTableModel;

Construtores

o

DefaultTableModelA classe possui seis construtores. Cada um pode ser usado para preencher o

DefaultTableModelDe maneiras diferentes.

O primeiro construtor não aceita argumentos e cria um

DefaultTableModelque não possui dados, zero colunas e zero linhas:

DefaultTableModel defTableModel = DefaultTableModel ();

O próximo construtor pode ser usado para especificar o número de linhas e colunas de um

DefaultTableModelsem dados:

DefaultTableModel defTableModel = DefaultTableModel (10, 10);

Existem dois construtores que podem ser usados ​​para criar um

DefaultTableModelcom nomes de colunas e um número especificado de linhas (todas contendo valores nulos). Um usa um

Objetomatriz para armazenar os nomes das colunas, o outro

Vetor:

String columnNames = {"Coluna 1", "Coluna 2", "Coluna 3"};DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);

ou

DefaultTableModel defTableModel = DefaultTableModel (columnNames, 10);

Finalmente, existem dois construtores usados ​​para preencher o

DefaultTableModelcom dados de linha junto com nomes de colunas. Um usado

Objetomatrizes, o outro

Vetores:

Dados do objeto = {{1,1,1}, {2,2,2}, {3,3,3}, {4,4,4}};

String columnNames = {"Coluna 1", "Coluna 2", "Coluna 3"};DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

ou

Vector rowData = new Vector ();

rowData.add (1);

Vector> data = new Vector> ();

data.add (0, rowData);

Vector columnNames = new Vector ();

columnNames.add ("Coluna 1");DefaultTableModel defTableModel = DefaultTableModel (data, columnNames);

Métodos úteis

Para adicionar uma linha ao

DefaultTableModeluse o

adicionar linhajunto com os dados da linha para adicionar:

Objeto newRowData = {5,5,5,5};defTableModel.addRow (newRowData);

Para inserir uma linha, use o

insertRow, especificando o índice de linha a ser inserido e os dados da linha:

Objeto insertRowData = {2.5,2.5,2.5,2,5};defTableModel.insertRow (2, insertRowData);

Para excluir uma linha, use o

removeRow, especificando o índice da linha a ser excluída:

defTableModel.removeRow (0);

Para obter um valor em uma célula da tabela, use o

getValueAtmétodo. Por exemplo, se os dados na linha 2, coluna 2 contiverem um int:

valor int = tabModel.getValueAt (2, 2);

Para definir um valor em uma célula da tabela

setValueAtmétodo com o valor a ser definido junto com o índice de linha e coluna:

defTableModel.setValueAt (8888, 3, 2);

Dicas de uso

Se um

JTableé criado usando o construtor que recebe uma matriz bidimensional que contém os dados da linha e uma matriz que contém os nomes das colunas:

Dados do objeto = {{1,1,1}, {2,2,2}, {3,3,3}, {4,4,4}};

String columnNames = {"Coluna 1", "Coluna 2", "Coluna 3"};

JTable exampleJTable = new JTable (data, columnNames);

o seguinte elenco não funcionará:

DefaultTableModel dft = (DefaultTableModel) exampleJTable.getModel ();

Um tempo de execução

ClassCastExceptionserá lançado porque, neste caso, o

DefaultTableModelé declarado como uma classe interna anônima no

JTableobjeto e não pode ser convertido. Só pode ser transmitido para o

TableModelinterface. Uma maneira de contornar isso é criar seu próprio

DefaultTableModele configurá-lo para ser o modelo do

JTable:

JTable exampleJTable = new JTable ();

DefaultTableModel defTableModel = new DefaultTableModel (data, columnNames);

exemploJTable.setModel (defTableModel);

Então o

DefaultTableModel

defTableModelpode ser usado para manipular os dados no

JTable.

Para ver o

DefaultTableModelem ação, dê uma olhada no programa de exemplo DefaultTableModel.