Olá a todos,
eu andei olhando na assinatura do ViniGodoy aqui do Forum, e resolvi trocar o meu DefaultTableModel pelo o método orientado nos links… Pois bem, achei legal a idéia, e creio que seja realmente mais fácil de se trabalhar com uma classe para cada tabela, enfim, implementei tudo “certo”, creio eu, e depois, quando tento colocar o meu novo modelo (eu peguei como base o exemplo LivrosTableModel = http://www.guj.com.br/posts/list/132698.java#714736 ) - Que por sinal, possui alguns pequenos erros de digitação do código, mas nada grave que atrapalhe o entendimento… Voltando, no momento onde eu coloco no meu modelo, ele me gera um erro de referência nula…
pesquisaTableModel modelo = new pesquisaTableModel(produtos);
tabelaPesquisa.setModel(modelo);
Alguém poderia me dar uma luz?
O erro gerado é este:
run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.JTable.prepareRenderer(JTable.java:5729)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2075)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1977)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1773)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JViewport.paint(JViewport.java:747)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
...
..
.
Não entendi o pq disso ao atribuir o setModel, uma vez que verifiquei, e a Lista está sendo passada direitinho, o objeto Modelo tb está sendo criado direito, e tudo mais… :?:
A minha Classe:
[code]package Modelo;
import Modelo.Bean.Produto;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class pesquisaTableModel extends AbstractTableModel {
private static final int COL_SELECIONADO = 0;
private static final int COL_CODIGO = 1;
private static final int COL_PRODUTO = 2;
private static final int COL_VALOR = 3;
private static final int COL_LOJA = 4;
private static final int COL_CADASTRO = 5;
private List<Produto> valores;
public pesquisaTableModel(List<Produto> valores) {
this.valores = new ArrayList<Produto>(valores);
}
@Override
public int getRowCount() {
return valores.size();
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public String getColumnName(int columnIndex) {
if (columnIndex == COL_SELECIONADO) return "X";
if (columnIndex == COL_CADASTRO) return "Cadastro";
if (columnIndex == COL_CODIGO) return "Código";
if (columnIndex == COL_LOJA) return "Loja";
if (columnIndex == COL_PRODUTO) return "Produto";
if (columnIndex == COL_VALOR) return "Valor";
return "";
}
@Override
public Object getValueAt(int row, int column) {
Produto produto = valores.get(row);
if (column == COL_SELECIONADO) return produto.estaSelecionado();
else
if (column == COL_CADASTRO) return produto.getCadastro();
else
if (column == COL_CODIGO) return produto.getCodigo();
else
if (column == COL_LOJA) return produto.getLink();
else
if (column == COL_PRODUTO) return produto.getProduto();
else
if (column == COL_VALOR) return produto.getValor();
return "";
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
Produto valor = valores.get(rowIndex);
if (columnIndex == COL_SELECIONADO) valor.setSelecionado(Boolean.valueOf(aValue.toString()));
}
@Override
public Class getColumnClass(int columnIndex) {
if (columnIndex == COL_SELECIONADO)
return boolean.class;
else
return String.class;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
if (columnIndex == COL_SELECIONADO)
return true;
else
return false;
}
public Produto get(int row) {
return valores.get(row);
}
}[/code]