AbstractTableModel - Será que é tão difícil assim?
Vamos repassar mais esta!
AbstractTableModel é uma classe abstrata que implementa a interface TableModel. Ela fornece código padrão para disparar TableModelEvents com os métodos fireTableRowsDeleted(), fireTableCellUpdated() e fireTableChanged(). Ela também gerencia todos os TableModelListeners registrados em um EventListenerList.
O método findColumn() procura o índice de uma coluna com um dado nome. Esta pesquisa é feita de modo linear e deve ser sobrescrita para modelos de tabelas enormes.
Três métodos devem ser implementados em subclasses concretas: getRowCount(), getColumnCount() e getValueAt(int row, int column).
1. JTable -> Controla a view da tabela: ordenação de colunas, ordenação das linhas, highlight, tamanho da célula;
2. TableModel -> Diz que dados serão exibidos na tabela. Quantas linhas e que informação vai em cada coluna. Também pode sugerir o nome da coluna;
3. TableCellRenderer -> É o componente que o JTable usa para efetivamente desenhar a célula;
4. TableCellEditor -> É o componente que o JTable usa para editar a célula;
5. TableColumn -> Contém informações sobre uma coluna.
Exemplo de implementação:
AbstractTableModel é uma classe abstrata que implementa a interface TableModel. Ela fornece código padrão para disparar TableModelEvents com os métodos fireTableRowsDeleted(), fireTableCellUpdated() e fireTableChanged(). Ela também gerencia todos os TableModelListeners registrados em um EventListenerList.
O método findColumn() procura o índice de uma coluna com um dado nome. Esta pesquisa é feita de modo linear e deve ser sobrescrita para modelos de tabelas enormes.
Três métodos devem ser implementados em subclasses concretas: getRowCount(), getColumnCount() e getValueAt(int row, int column).
1. JTable -> Controla a view da tabela: ordenação de colunas, ordenação das linhas, highlight, tamanho da célula;
2. TableModel -> Diz que dados serão exibidos na tabela. Quantas linhas e que informação vai em cada coluna. Também pode sugerir o nome da coluna;
3. TableCellRenderer -> É o componente que o JTable usa para efetivamente desenhar a célula;
4. TableCellEditor -> É o componente que o JTable usa para editar a célula;
5. TableColumn -> Contém informações sobre uma coluna.
Exemplo de implementação:
Descrição: |
JTable é um componente usado para exibir dados nas duas formas dimensional e tabular. O componente é baseado no Modelo - View - Controller arquitetura (MVC).O JTable é um componente GUI e actua como um Ver, e é dependente do modelo de dados. O dados modelo para JTable pode ser qualquer modelo que implementa a interface TableModel de javax . pacote swing.table. O modelo JTable também pode ser estendido de classe AbstractTableModel do pacote javax.swing.table. Esta classe abstrata fornece padrão implementações para a maioria dos métodos na interface TableModel. O modelo de tabela pode armazenar os dados da tabela, sob qualquer forma, Vector, HashTable, ou apenas uma matriz. O TableModel deve implementar o método setValueAt (Object value, int linha, int col) para atualizar corretamente os dados no modelo de dados da célula da tabela e getValueAt (int row, int col) para atualizar corretamente a célula JTable com os dados no modelo de mesa. O JTable deve ser adicionado a uma ScrollPane e não directamente a qualquer componente. O ScrollPane cuida da rolagem da tabela e recebe automaticamente o cabeçalho da tabela, que mostra os nomes das colunas, e coloca-lo em cima da mesa. Os nomes das colunas permanecer visível na parte superior da área de visualização, mesmo que os utilizadores rola para baixo.
O exemplo a seguir mostra como criar uma JTable simples usando um TableModel. O exemplo é para mostrar as informações da máquina na forma tabular. As informações da máquina são armazenadas em um objeto MachineData. A tabela simples modelo de tabela se estende AbstractTableModel e mantém o vetor MachineData. O modelo implementa, getValueAt () e setValueAt () métodos para atualizar o JTable com os dados no modelo de mesa e vice-versa.
//package
//import statements
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.*;
/**
* SimpleTableFrame.java
* This class shows how to create a simple JTable
* using table model
*
*
*/
public class SimpleTableFrame extends JFrame
{
//JTable table
private JTable m_simpleTable;
//JTable model
private SimpleTableModel m_simpleTableModel;
/**
* Constructor
*
* @return void
* @exception
*/
public SimpleTableFrame()
{
super("Simple Table Demo");
m_simpleTableModel = new SimpleTableModel(getDummyData());
m_simpleTable = new JTable(m_simpleTableModel);
JScrollPane scrollPane = new JScrollPane(m_simpleTable);
getContentPane().add(scrollPane);
}
/**
* getDummyData
* generating dummy MachineData object and creating a vector
*/
private Vector getDummyData()
{
Vector dummyMacData = new Vector(10, 10);
dummyMacData.addElement(new MachineData
(new Integer(100), "Robert", "288.209.140.223",
"Win NT", "Engineering"));
dummyMacData.addElement(new MachineData
(new Integer(105), "Rahul", "288.209.140.214",
"Solaris 5", "Engineering"));
dummyMacData.addElement(new MachineData
(new Integer(110), "Daina", "288.209.140.220",
"HP UX", "Engineering"));
dummyMacData.addElement(new MachineData
(new Integer(106), "Vijay", "288.209.140.215",
"Win NT", "Engineering"));
dummyMacData.addElement(new MachineData
(new Integer(302), "Andy", "288.209.142.203",
"Win 98", "Human Resource"));
dummyMacData.addElement(new MachineData
(new Integer(504), "Tom", "288.209.141.207",
"Win NT", "Marketing"));
dummyMacData.addElement(new MachineData
(new Integer(104), "Bill", "288.209.140.222",
"Win NT", "Engineering"));
return dummyMacData;
}
/**
* main
* main method, starting point
*/
public static void main(String[] arg)
{
SimpleTableFrame m = new SimpleTableFrame();
m.setVisible(true);
m.setSize(new Dimension(600, 300));
m.validate();
}
/**
* SimpleTableModel.java
* This class is the table nodel
*
* @author Rahul Sapkal(rahul@javareference.com)
*/
public class SimpleTableModel extends AbstractTableModel
{
public static final int MAC_CODE_COL = 0;
public static final int MAC_NAME_COL = 1;
public static final int IP_COL = 2;
public static final int OS_COL = 3;
public static final int DOMAIN_COL = 4;
public String[] m_colNames = {"Machine Code",
"Machine Name",
"IP Address",
"Operating System",
"Domain"};
public Class[] m_colTypes = {Integer.class,
String.class,
String.class,
String.class,
String.class};
Vector m_macDataVector;
/**
* Constructor
*/
public SimpleTableModel(Vector macDataVector)
{
super();
//store the data
m_macDataVector = macDataVector;
}
public int getColumnCount()
{
return m_colNames.length;
}
/**
* getRowCount
* conta o numero de linhas
*/
public int getRowCount()
{
return m_macDataVector.size();
}
/**
* setValueAt
* esta função atualiza os dados da tabela
*/
public void setValueAt(Object value, int row, int col)
{
MachineData macData = (MachineData)(m_macDataVector.elementAt(row));
switch(col)
{
case MAC_CODE_COL : macData.setMacCode((Integer) value);
break;
case MAC_NAME_COL : macData.setMacName((String) value);
break;
case IP_COL : macData.setMacIP((String) value);
break;
case OS_COL : macData.setMacOS((String) value);
break;
case DOMAIN_COL : macData.setMacDomain((String) value);
break;
}
}
public String getColumnName(int col)
{
return m_colNames[col];
}
public Class getColumnClass(int col)
{
return m_colTypes[col];
}
/**
* getValueAt
* Esta função atualiza a tabela
*/
public Object getValueAt(int row, int col)
{
MachineData macData = (MachineData)(m_macDataVector.elementAt(row));
switch(col)
{
case MAC_CODE_COL : return macData.getMacCode();
case MAC_NAME_COL : return macData.getMacName();
case IP_COL : return macData.getMacIP();
case OS_COL : return macData.getMacOS();
case DOMAIN_COL : return macData.getMacDomain();
}
return new String();
}
}
public class MachineData {
private Integer m_macCode;
private String m_macName;
private String m_macIP;
private String m_macOS;
private String m_macDomain;
public MachineData()
{
}
public MachineData(Integer macCode, String macName,
String macIP, String macOS,
String macDomain)
{
m_macCode = macCode;
m_macName = macName;
m_macIP = macIP;
m_macOS = macOS;
m_macDomain = macDomain;
}
public Integer getMacCode()
{
return m_macCode;
}
public String getMacName()
{
return m_macName;
}
public String getMacIP()
{
return m_macIP;
}
public String getMacOS()
{
return m_macOS;
}
public String getMacDomain()
{
return m_macDomain;
}
public void setMacCode(Integer macCode)
{
m_macCode = macCode;
}
public void setMacName(String macName)
{
m_macName = macName;
}
public void setMacIP(String macIP)
{
m_macIP = macIP;
}
public void setMacOS(String macOS)
{
m_macOS = macOS;
}
public void setMacDomain(String macDomain)
{
m_macDomain = macDomain;
}
}
}
Espero que tenham gostado! Abraços!
|
Comentários
Postar um comentário