Usando matrizes para armazenar os dados da tabela
Uma maneira simples de fornecer dados para o
classe é usar duas matrizes. O primeiro contém os nomes das colunas em um
matriz:
A segunda matriz é uma matriz de objetos bidimensional que mantém os dados da tabela. Essa matriz, por exemplo, inclui seis nadadores olímpicos:
A chave aqui é garantir que as duas matrizes tenham o mesmo número de colunas.
Construindo a JTable
Depois de ter os dados no lugar, é uma tarefa simples criar a tabela. Basta ligar para o
JTableconstrutor e passe as duas matrizes: você provavelmente desejará adicionar barras de rolagem para garantir que o usuário possa ver todos os dados. Para fazer isso, coloque o.
JTabledentro de
JScrollPane: Agora, quando a tabela for exibida, você verá as colunas e linhas de dados e poderá rolar para cima e para baixo.
O objeto JTable fornece uma tabela interativa. Se você clicar duas vezes em qualquer uma das células, poderá editar o conteúdo - embora qualquer edição afete apenas a GUI, não os dados subjacentes. (A
ouvinte de evento precisaria ser implementado para lidar com a alteração de dados.).Para alterar as larguras das colunas, passe o mouse na borda do cabeçalho de uma coluna e arraste-o para frente e para trás. Para alterar a ordem das colunas, clique e segure o cabeçalho da coluna e arraste-o para a nova posição.
Classificando colunas
Para adicionar a capacidade de classificar as linhas, chame o
setAutoCreateRowSortermétodo: quando esse método é definido como verdadeiro, você pode clicar no cabeçalho de uma coluna para classificar as linhas de acordo com o conteúdo das células nessa coluna.
Alterando a aparência da tabela
Para controlar a visibilidade das linhas de grade, use o
setShowGridmétodo: Para alterar completamente a cor da tabela, use o.
setBackgrounde
setGridColormétodos: As larguras da coluna da tabela são iguais por padrão. Se o contêiner em que a tabela se encontra for redimensionável, as larguras das colunas serão expandidas e encolherão e o contêiner aumentará ou diminuirá. Se um usuário redimensionar a coluna, a largura das colunas à direita será alterada para acomodar o novo tamanho da coluna.
As larguras iniciais da coluna podem ser definidas usando o método setPreferredWidth ou uma coluna. Use a classe TableColumn para obter primeiro uma referência para a coluna e, em seguida, o método setPreferredWidth para definir o tamanho:
Selecionando linhas
Por padrão, o usuário pode selecionar as linhas da tabela de uma das três maneiras:
- Para selecionar uma única linha, selecione uma célula da tabela nessa linha.
- Para selecionar várias linhas contínuas, arraste o mouse sobre várias linhas ou selecione as células da tabela com a célula Shift pressionada.
- Para selecionar várias linhas não contínuas, selecione as células da tabela enquanto mantém pressionado o botão chave de controle (chave de comando para Macs).
Usando um modelo de tabela
O uso de algumas matrizes para os dados de uma tabela pode ser útil se você quiser uma simples Cordatabela com base em dados que pode ser editada. Se você olhar para a matriz de dados que criamos, ela contém outros tipos de dados que não
- a
coluna contém
e a
coluna contém
. No entanto, essas duas colunas são exibidas como Strings. Para alterar esse comportamento, crie um modelo de tabela.
Um modelo de tabela gerencia os dados a serem exibidos na tabela. Para implementar um modelo de tabela, você pode criar uma classe que estenda o
classe:
Os seis métodos acima são aqueles usados neste guia passo a passo, mas há mais métodos definidos pelo
classe que é útil na manipulação de dados em um
objeto. Ao estender uma classe para usar o
você é obrigado a implementar apenas o
,
e
métodos.
Crie uma nova classe implementando os cinco métodos mostrados acima:
Faz sentido neste exemplo para o
classe para conter as duas seqüências que contêm os dados da tabela. Então o
,
e
Os métodos podem usar as matrizes para fornecer os valores para a tabela. Observe também como o
O método foi escrito para não permitir que as duas primeiras colunas sejam editadas.
Agora, em vez de usar as duas matrizes para criar o
objeto, podemos usar o
classe:
Quando o código for executado, você verá que o
O objeto está usando o modelo de tabela porque nenhuma célula da tabela é editável e os nomes das colunas estão sendo usados corretamente. Se o
Como o método não havia sido implementado, os nomes das colunas na tabela seriam exibidos como os nomes padrão de A, B, C, D etc.
Vamos agora considerar o método
. Isso por si só faz com que o modelo da tabela valha a implementação, pois fornece
objeto com o tipo de dados contido em cada coluna. Se você se lembra, a matriz de dados do objeto possui duas colunas que não são
tipos de dados: o
coluna que contém ints e o
coluna que contém
. O conhecimento desses tipos de dados altera a funcionalidade fornecida pelo
objeto para essas colunas. A execução do código da tabela de amostra com o modelo de tabela implementado significa o
coluna será realmente uma série de caixas de seleção.
Adicionando um Editor ComboBox
Você pode definir editores personalizados para as células na tabela. Por exemplo, você pode tornar uma caixa de combinação uma alternativa à edição de texto padrão para um campo.
Aqui está um exemplo usando
o campo do país:
Para definir o editor padrão para a coluna do país, use o
classe para obter uma referência à coluna do país e o
método para definir o
como o editor de célula: