Boa tarde amigos.
Estou tentando entender como faço para implementar a TableModel, então criei uma classe assim
package controler;
import java.util.*;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import model.EstadoBean;
public class EstadoTableModel extends AbstractTableModel{
public static final int COL_ID = 0;
public static final int COL_UF = 1;
public static final int COL_NOME = 2;
private List<EstadoBean> listarEstados;
public EstadoTableModel(List<EstadoBean> l){
this.listarEstados = new ArrayList<EstadoBean>(l);
}
public int getRowCount(){
return listarEstados.size();
}
public int getColumnCount(){
return 3;
}
public Object getValueAt(int linhas, int colunas){
EstadoBean estado = this.listarEstados.get(linhas);
if(colunas == COL_ID) return estado.getId();
if(colunas == COL_UF) return estado.getUf();
if(colunas == COL_NOME) return estado.getNome();
return "";
}
public String getColumnName(int colunas){
if(colunas == COL_ID) return "Id";
if(colunas == COL_UF) return "Uf";
if(colunas == COL_NOME) return "Nome";
return "";
}
public EstadoBean get(int linhas){
return listarEstados.get(linhas);
}
}
ai na tela que tem a jtable eu coloquei assim pra preencher a tabela com os dados
import javax.swing.JLabel;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import java.awt.Font;
import model.EstadoBean;
import model.EstadoDao;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.awt.event.ActionEvent;
import javax.swing.JTable;
import controler.EstadoTableModel;
@SuppressWarnings("serial")
public class jPnl_Estado extends JPanel {
private JTable tabela;
EstadoTableModel modelo;
public jPnl_Estado() {
try {
modelo = new EstadoTableModel(EstadoDao.ListaEstado());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
tabela = new JTable(modelo);
tabela.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
tabela.setBounds(200, 62, 550, 500);
JScrollPane rolagem = new JScrollPane();
add(tabela);
initComponents();
}
private void initComponents() {
setLayout(null);
JLabel lblEstado = new JLabel("Cadastro de Estados");
lblEstado.setFont(new Font("Tahoma", Font.BOLD, 12));
lblEstado.setBounds(10, 11, 224, 14);
add(lblEstado);
JButton btnFechar = new JButton("Fechar");
btnFechar.setBorder(null);
btnFechar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Agenda.mnCadastro.setEnabled(true);
Agenda.mnRelatorio.setEnabled(true);
Agenda.mnAjuda.setEnabled(true);
Agenda.cardLayout.show (Agenda.painelBase, "principal");
}
});
btnFechar.setOpaque(false);
btnFechar.setMnemonic('F');
btnFechar.setBounds(10, 228, 108, 23);
add(btnFechar);
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
//Screen width = d.width
//Screen height = d.height
JSeparator separator = new JSeparator();
separator.setBounds(1, 26, d.width, 1);
add(separator);
JButton btnNewButton = new JButton("Pesquisar");
btnNewButton.setBorder(null);
btnNewButton.setMnemonic('P');
btnNewButton.setOpaque(false);
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnNewButton.setBounds(10, 58, 108, 23);
add(btnNewButton);
JButton btnNewButton_1 = new JButton("Visualisar");
btnNewButton_1.setBorder(null);
btnNewButton_1.setOpaque(false);
btnNewButton_1.setMnemonic('V');
btnNewButton_1.setBounds(10, 92, 108, 23);
add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("Incluir");
btnNewButton_2.setBorder(null);
btnNewButton_2.setOpaque(false);
btnNewButton_2.setMnemonic('I');
btnNewButton_2.setBounds(10, 126, 108, 23);
add(btnNewButton_2);
JButton btnNewButton_3 = new JButton("Alterar");
btnNewButton_3.setBorder(null);
btnNewButton_3.setMnemonic('A');
btnNewButton_3.setOpaque(false);
btnNewButton_3.setBounds(10, 160, 108, 23);
add(btnNewButton_3);
JButton btnNewButton_4 = new JButton("Excluir");
btnNewButton_4.setBorder(null);
btnNewButton_4.setOpaque(false);
btnNewButton_4.setMnemonic('E');
btnNewButton_4.setBounds(10, 194, 108, 23);
add(btnNewButton_4);
}
}
Ele está trazendo os dados, porém, não sei como e onde implementar pra ele trazer também o cabeçalho, eu sei que na classe EstadoTableModel, eu alterei pro cabeçalho que tem minha tabela. porém não sei mais progredir, alguém poderia dar uma explicação. (não vou negar, tentei sim usar defaulttablemodel, mas quando fui procurar ajuda e muita gente falando mal dele, logo larguei e to quebrando a cabeça aki no TableModel).
Um muito obrigado.
Christian