Boa tarde a todos,
Estou seguindo o exemplo linkado aqui no forum pelo amigo ViniGodoy -> http://www.javasimples.com.br/swing-awt/death-to-defaulttablemodel-abstracttablemodel-rulez/
Montei todo o exemplo adequando com os campos de minha tabela de clientes, no entanto ao chamar a tela é apresentado o seguinte erro:
[quote]Exception occurred during event dispatching:
java.lang.NullPointerException
at javax.swing.JTable.prepareRenderer(JTable.java:5720)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2072)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1974) . . . [/quote]
Minha classe Abstract esta montada da seguinte forma:
[code]public class MensalistaTableModel extends AbstractTableModel {
//constantes que vão representar as colunas
//(só para facilitar o entendimento do código)
private final int COL_NOME = 0;
private final int COL_END = 1;
private final int COL_TEL = 2;
private final int COL_CPF = 3;
private final int COL_SITU = 4;
//lista dos mensalistas que serão exibidos
private List mensalistas;
public MensalistaTableModel() {
mensalistas = new ArrayList();
}
public MensalistaTableModel(List<Mensalista> lista) {
this();
mensalistas.addAll(lista);
}
public int getRowCount() {
//cada produto na lista será uma linha
return mensalistas.size();
}
public int getColumnCount() {
//vamos exibir só Nome e Quantidade, então são 2 colunas
return 5;
}
@Override
public String getColumnName(int column) {
//qual o nome da coluna
if (column == COL_NOME)
return "Nome";
else if (column == COL_END)
return "Endereço";
else if (column == COL_TEL)
return "Telefone";
else if (column == COL_CPF)
return "Cpf";
else if (column == COL_SITU)
return "Ativo";
return "";
}
@Override
public Class getColumnClass(int columnIndex) {
//retorna a classe que representa a coluna
if (columnIndex == COL_NOME)
return String.class;
else if (columnIndex == COL_END)
return String.class;
else if (columnIndex == COL_TEL)
return String.class;
else if (columnIndex == COL_CPF)
return String.class;
else if (columnIndex == COL_SITU)
return boolean.class;
return String.class;
}
public Object getValueAt(int rowIndex, int columnIndex) {
//pega o produto da linha
Mensalista m = mensalistas.get(rowIndex);
//verifica qual valor deve ser retornado
if (columnIndex == COL_NOME)
return m.getNome();
else if (columnIndex == COL_END)
return m.getEndereco();
else if (columnIndex == COL_TEL)
return m.getTelefone();
else if (columnIndex == COL_CPF)
return m.getCpf();
else if (columnIndex == COL_SITU)
return m.getSituacao();
return "";
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
//Dados da tabela não editaveis
return false;
}
[/code]
Estou chamando a tela, carregando o modelo logo no construtor por meio do metodo carregarTabela.
Já verifiquei e o conteúdo do ArrayList não esta nulo.
[code]public ConsultaMensalistaUI() {
initComponents();
try {
carregarTabela();
} catch (ClassNotFoundException ex) {
Logger.getLogger(ConsultaMensalistaUI.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(ConsultaMensalistaUI.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void carregarTabela() throws ClassNotFoundException, SQLException{
ultimoCod=4;
PessoaControl pc = new PessoaControl();
List<Mensalista> listagem = new ArrayList<Mensalista>(pc.buscaMensalista());
modelo = new MensalistaTableModel(listagem);
jTableMensalista.setModel(modelo);
}
[/code]
Grato a quem puder me dar uma ajudinha!