Tabelas com JTable JFrame + JPanelO
Seminário: Tabelas com JTable JFrame + JPanelO. Pesquise 862.000+ trabalhos acadêmicosPor: Lucilio • 28/11/2013 • Seminário • 6.584 Palavras (27 Páginas) • 317 Visualizações
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
...