Boa tarde!
to com um pequeno problema que nao sei como resolver,
bom, depois de muito olhar, decidi retirar minhas DefaultTableModel e customizar as minhas, que nao sao poucas, aliás!
entao
desenvolvi a primeira, so que ta dando erro!
nao sei se é recomendado colocar o DAO dentro da TableModel, mas coloquei para ficar de melhor entendimento
entao vai minha TableModel:
package sga.tableModels;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import sga.hibernate.configurations.GenericDAO;
import sga.hibernate.configurations.HibernateUtil;
import sga.hibernate.mapeamento.Usuario;
/**
*
* @author Juan Perondi
*/
public class TableModelUsuario extends AbstractTableModel {
private final int COL_COD_USUARIO = 0;
private final int COL_NOME_USUARIO = 1;
private final int COL_EMAIL_USUARIO = 2;
private final int COL_RG_USUARIO = 3;
private final int COL_SETOR_USUARIO = 4;
private final int COL_ENDERECO_USUARIO = 5;
private final String headers[] = new String[]{"Código", "Nome", "Email", "RG", "Setor", "Endereço"};
private final int headersSize[] = new int[]{60, 350, 300, 100, 250, 500};
private List<Usuario> usuarios;
/**
* Construtor Padrao
**/
public TableModelUsuario() {
usuarios = new ArrayList();
recarregarUsuarios();
}
/**
* Passando a lusta de Usuarios para ser inserida neste Table
**/
public TableModelUsuario(List<Usuario> lista) {
this();
usuarios.addAll(lista);
fireTableDataChanged();
}
/**
* @return quantidade de itens no Model
**/
public int getRowCount() {
return usuarios.size();
}
/**
* @return quantidade de colunas
**/
public int getColumnCount() {
return headers.length;
}
/**
* @return nome das colunas
**/
@Override
public String getColumnName(int column) {
return headers[column];
}
/**
* @return classe das colunas
**/
@Override
public Class getColumnClass(int columnIndex) {
if (columnIndex == COL_COD_USUARIO) {
return int.class;
}
return String.class;
}
/**
* @return Valor a uma determinada Linha e determinada Coluna
**/
public Object getValueAt(int rowIndex, int columnIndex) {
Usuario user = usuarios.get(rowIndex);
if (columnIndex == COL_COD_USUARIO) {
return user.getCodUsuario();
}
if (columnIndex == COL_NOME_USUARIO) {
return user.getNome();
}
if (columnIndex == COL_EMAIL_USUARIO) {
return user.getEMail();
}
if (columnIndex == COL_RG_USUARIO) {
return user.getRg();
}
if (columnIndex == COL_SETOR_USUARIO) {
return user.getSetor();
}
if (columnIndex == COL_ENDERECO_USUARIO) {
return user.getEndereco();
}
return "";
}
/**
* @return uma Lista contendo todos os Usuario
**/
public List<Usuario> getAllUsuarios() {
return usuarios;
}
/**
* Usuario a uma determinada linha
**/
public Usuario getUsuario(int index) {
return usuarios.get(index);
}
/**
* insere um usuario na Tabela e no Banco de Dados
**/
public void adicionaUsuario(Usuario user) {
GenericDAO daoart = new GenericDAO();
daoart.setObject(user);
daoart.salvaOuAtualiza();
usuarios.add(user);
fireTableDataChanged();
}
/**
* Remove um usuario baseando e sua locaulzacao
**/
public void removeUsuario(int index) {
Usuario user = usuarios.get(index);
GenericDAO daoart = new GenericDAO();
daoart.setObject(user);
daoart.exclui();
usuarios.remove(index);
fireTableRowsDeleted(index, index);
}
/**
* Limpa a lista de usuarios
**/
public void limpaLista() {
int i = usuarios.size();
usuarios.clear();
fireTableRowsDeleted(0, i - 1);
}
/**
* Verifica se contem um determinado Usuario
**/
public boolean containsUsuario(Usuario user) {
if (usuarios.contains(user)) {
return true;
}
return false;
}
/**
* @return tamanhos dos cabecalho
*/
public int[] getHeadersSize() {
return headersSize;
}
public void recarregarUsuarios() {
limpaLista();
usuarios.addAll( HibernateUtil.getSession().getNamedQuery("Usuario.findAll").list());
}
}
pra inserir to fazendo assim:
...
tableModel = new TableModelUsuario();
getTabela().setModel(tableModel);
setSizesColumns(tableModel.getHeadersSize());
getTabela().validate();
...
so que da NullPointer!:
Exception occurred during event dispatching:
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.paintToOffscreen(JComponent.java:5124)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1475)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1406)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:803)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1045)
at java.awt.Dialog$3.run(Dialog.java:1097)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1095)
at java.awt.Component.show(Component.java:1563)
at java.awt.Component.setVisible(Component.java:1515)
at java.awt.Window.setVisible(Window.java:841)
at java.awt.Dialog.setVisible(Dialog.java:985)
at sga.tela.principais.JCadUsuarios$9.run(JCadUsuarios.java:252)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Não sei o que estou fazendo de errado!
alguem tem uma dica ai?