TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Tabelas com JTable JFrame + JPanelO

Seminário: Tabelas com JTable JFrame + JPanelO. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  28/11/2013  •  Seminário  •  6.584 Palavras (27 Páginas)  •  291 Visualizações

Página 1 de 27

Tabelas com JTable + JFrame + JPanel

Pertence ao pacote javax.swing.

A classe javax.swing.JTable é utilizada para vizualizar dados em grid no Swing, é um dos componentes com mais recursos desse pacote. Como todo componente, o JTable deve estar inserido dentro de uma janela, ou seja, dentro de uma JFrame, como o JFrame é a versão Swing do Frame(AWT), ao adicionarmos componentes ao JFrame teremos que utilizar o JPanel para gerenciar estes componentes. O JTable possui um pacote especial, que contém diversas classes para sua utilização: javax.swing.table.

Esta classe não retém os dados da tabela que ela apresenta. Ela os obtém de um modelo, representado pela classe javax.swing.table.AbstractTableModel. Isto significa que um objeto da classe javax.swing.JTable simplesmente representa a aparência e o comportamento da tabela, mas os dados que ela exibe são armazenados em um objeto da classe javax.swing.table.AbstractTableModel.

Não é necessário criar explicitamente um objeto da classe javax.swing.table.AbastractTableModel para armazenar os dados que serão exibidos em uma grade. Pode-se criar uma tabela utilizando um vetor de textos e uma matriz de objetos. O vetor de textos deve ter os títulos das colunas e a matriz de objetos deve ter os dados das linhas. Quando a tabela é criada, esses dados são armazenados em um modelo de dados padrão. Este modelo é criado automaticamente.

A maioria dos componentes swing possuem uma arquitetura que separa model e view, de forma que é definida uma interface para cada model. Dentro deste contexto, TableModel é a interface que representa o model da JTable.

Se não informarmos qual será o model, a JTable usará por padrão uma instância de DefaultTableModel.

O DefautTableModel principal motivo complexo, motivo pelo qual não é indicado o seu uso, é muito mais difícil de matê-lo.

A JTable chama os métodos do TableModel para obter informações sobre o conteúdo da tabela, como número de linhas e colunas, conteúdo de cada célula, etc. Com estas informações em mãos, ela pode montar os dados na tela corretamente.

A classe AbstractTableModel é uma classe abstrata que oferece a implementação de alguns métodos da interface TableModel, além de um conjunto de métodos úteis. Portanto o usual é estender esta classe ao invés de implementar TableModel diretamente.

Métodos da interface TableModel:

getRowCount retorna a quantidade total de linhas. Com esta informação, a JTable sabe quantas linhas devem ser exibidas

getColumnCount retorna a quantidade total de colunas que a JTable deve usar para montar a tabela

getColumnName(int columnIndex) retorna o nome da coluna referente ao índice especificado por parâmetro. O nome da coluna é usado para definir o texto do cabeçalho

getColumnClass(int columnIndex) retorna o tipo de dado associado a coluna especificada. Esta informação é utilizada para definir o “renderer” e o “editor” que serão associados às células pertencentes a coluna em questão

isCellEditable(int rowIndex, int columnIndex) retorna um valor booleano que diz se a célula especificada pode ter seu valor alterado ou não. Isto significa que o método “setValueAt” só terá efeito se o retorno deste método for true

getValueAt(int rowIndex, int columnIndex) retorna o conteúdo da célula especificada

setValueAt(Object value, int rowIndex, int columnIndex) define um novo valor para célula especificada

addTableModelListener(TableModelListener l) adiciona o TableModelListener especificado na lista de listeners a serem notificados das mudanças nos dados da tabela

removeTableModelListener(TableModelListener l) remove o TableModelListener especificado da lista de listeners a serem notificados

Não precisamos conhecer todos os métodos da classe AbstractTableModel, mas o mais importante, os métodos “fire”, que servem para notificar a ocorrência de eventos, conforme descrito a seguir:

fireTableDataChanged notifica que todos os dados da tabela podem ter sido alterados. A JTable usa esta informação para redesenhar todas as células, atualizando seu conteúdo

fireTableStructureChanged notifica que a estrutura da tabela foi modificada. Isto significa que a quantidade, o nome ou tipo das colunas podem ter sido alteradas. Este tipo de evento faz com que a JTable reconstrua sua estrutura na tela

fireTableRowsInserted(int firstRow, int lastRow) notifica que as linhas na faixa especificada foram adicionadas, fazendo com que a JTable redesenhe apenas as linhas que foram afetadas

fireTableRowsUpdated(int firstRow, int lastRow) notifica que as linhas na faixa especificada tiveram seu valor atualizado

fireTableRowsDeleted(int firstRow, int lastRow) notifica que as linhas na faixa especificada foram removidas

fireTableCellUpdated(int row, int column) notifica que o conteúdo da célula especificada foi atualizado, fazendo com que a JTable redesenhe apenas a célula em questão

O pacote javax.swing.table

Esta pacote é extenso, é necessário uma consulta ao site oficial da Oracle para o entendimento das aplicabilidades das classes e interfaces deste pacote:

1. http://www.oracle.com/br/index.html

2. Aba Download

3. Link: Java for Developers

4. Aba: Documentação

5. Link: APIs

6. Core API Docs > 7 English

Java™ Platform, Standard Edition 7

API Specification

Package javax.swing.table

Interfaces:

Interface Description

TableCellEditor Essa interface define o método de qualquer objeto que gostaria de ser um editor de valores para componentes como JListBox , JComboBox , JTree , ou JTable necessidades de implementar.

TableCellRenderer Esta interface define o método exigido por qualquer objeto que gostaria de ser um representante para as células de uma JTable.

TableColumnModel Define os requisitos para um objeto modelo de tabela de coluna adequado para uso com JTable.

TableModel O

...

Baixar como (para membros premium)  txt (27.3 Kb)  
Continuar por mais 26 páginas »
Disponível apenas no TrabalhosGratuitos.com