(c) 2002 João Pedro Silva . jpbs66@gmail.com
JTable é um componente gráfico Java, que faz parte do pacote Swing.
Neste documento vamos olhar para a sua implementação em Sun Java 2 v. 1.3.1.
Este componente de interface com o utilizador é utilizado para a geração de tabelas bidimensionais com o formato gráfico
A sua posição hierárquica na estrutura de classes java é:
|
|
|
|
+--javax.swing.JTable
e implementa as interfaces:
Accessible, CellEditorListener, EventListener, ImageObserver, ListSelectionListener, MenuContainer, Scrollable, Serializable, TableColumnModelListener, TableModelListener
Como qualquer outro componente gráfico, necessita de um contentor.
JTable()
Constrói um JTable por omissão, com estruturas por omissão.
JTable(int numRows, int numColumns)
Constrói um JTable com numRows e numColumns de células vazias utilizando DefaultTableModel. (Modelo de tabela por defeito)
JTable(Object[][] rowData, Object[] columnNames)
Constrói um JTable para mostrar os valores do array bidimensional rowData, e com a linha de títulos de colunas columnNames
JTable(TableModel dm)
Constrói um JTable que é inicializado com o modelo de tabelas já criado “dm”.
JTable(TableModel dm, TableColumnModel cm)
Constrói um JTable com modelos diferentes para colunas e linhas (dm e cm)
JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm)
Constrói um JTable semelhante ao anterior mas com um conjunto de células seleccionadas
JTable(Vector rowData, Vector columnNames)
Constrói um JTable para mostrar os valores de um Vector de Vectores rowData e com os títulos columnNames
Nota: Existem muitos mais métodos que aqui não estão descritos, já que se trata de um exemplo não exaustivo.
Foi usado o Java JDK da Sun em ambiente Windows.
java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1-b24)
Java HotSpot(TM) Client VM (build 1.3.1-b24, mixed mode)
Compilação:
\jdk1.3.1\bin\javac -deprecation Tabela.java
Execução:
java -classpath .;C:\java\lnfdir\newlnf.jar Tabela
// Tabela.java
/* Importação de packages */
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.*;
import java.awt.event.*;
public class Tabela extends JFrame {
private boolean DEBUG = true;
// Construtor
public Tabela() {
super("Teste Tabela");
// Criação das estruturas com os dados
Object[][] data = {
{"Maria", "Campos",
"Snowboard", new Integer(5), new Boolean(false)},
{"Alice", "Duraes",
"Pesca", new Integer(3), new Boolean(true)},
{"Cristina", "Silva",
"Golfe", new Integer(2), new Boolean(false)},
{"Marco", "Andre",
"Canoagem", new Integer(20), new Boolean(true)},
{"Angela", "Ferreira",
"Tiro", new Integer(4), new Boolean(false)}
};
//Estrutura com os títulos das colunas
String[] columnNames = {"Nome",
"Sobrenome",
"Deporto",
"Anos",
"Vegetariano"};
// Cria e dimensiona no ecrã a tabela
final JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
//Regista o Listener para o mouse.
if (DEBUG) {
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
printDebugData(table);
}
});
}
//Cria o painel scroll e adiciona-lhe a tabela
JScrollPane scrollPane = new JScrollPane(table);
//Adiciona o painel de scroll pane à janela.
getContentPane().add(scrollPane, BorderLayout.CENTER);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
//Tratamento de um click numa linha.
private void printDebugData(JTable table) {
int numRows = table.getRowCount();
int numCols = table.getColumnCount();
javax.swing.table.TableModel model = table.getModel();
// Imprime os dados dessa linha
System.out.println("Dados: ");
for (int i=0; i < numRows; i++) {
System.out.print(" linha " + i + ":");
for (int j=0; j < numCols; j++) {
System.out.print(" " + model.getValueAt(i, j));
}
System.out.println();
}
System.out.println("--------------------------");
}
// Main para iniciar a aplicação
public static void main(String[] args) {
Tabela frame = new Tabela();
frame.pack();
frame.setVisible(true);
}
}
Resultado da execução na consola – por cada linha da tabela, imprime o seu conteúdo:
Dados:
linha 0: Maria Campos Snowboard 5 false
linha 1: Alice Duraes Pesca 3 true
linha 2: Cristina Silva Golfe 2 false
linha 3: Marco Andre Canoagem 20 true
linha 4: Angela Ferreira Tiro 4 false
--
Encontra em JavaFiles este documento mais extenso.