else if(columnIndex == COL_REALIZADO) return boolean.class;
Quando eu cadastro um objeto um erro ocorre e a JTable não é preenchida, apesar dos dados irem pro banco.
Se eu abro novamente o aplicativo e vou na tabela, ela fica toda apagada, mas dá pra ver alguns dados quando eu vou passando os campos no TAB.
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)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1770)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:752)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5124)
at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1479)
at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1410)
at javax.swing.RepaintManager.paint(RepaintManager.java:1224)
at javax.swing.JComponent._paintImmediately(JComponent.java:5072)
at javax.swing.JComponent.paintImmediately(JComponent.java:4882)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
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:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1584)
at java.awt.Component.setVisible(Component.java:1536)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at controle.ControleLancamento.<init>(ControleLancamento.java:46)
at controle.ControlePrincipal.actionPerformed(ControlePrincipal.java:67)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
at java.awt.Component.processMouseEvent(Component.java:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
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)
TableModel:
public class LancamentosTableModel<T> extends AbstractTableModel {
//Nome das colunas
private static final int COL_DATA = 0;
private static final int COL_REALIZADO = 1;
private static final int COL_DOCUMENTO = 2;
private static final int COL_CODIGO = 3;
private static final int COL_HISTORICO = 4;
private static final int COL_FAVORECIDO = 5;
private static final int COL_ENTRADA = 6;
private static final int COL_SAIDA = 7;
private static final int COL_CONTA = 8;
private static final int COL_OBRA = 9;
private List<MovimentoFinanceiro> movimentos;
public LancamentosTableModel(){
this.movimentos = new ArrayList<MovimentoFinanceiro>();
}
public LancamentosTableModel(List<MovimentoFinanceiro> lista) {
this();
this.movimentos.addAll(lista);
}
@Override
public int getRowCount() {
return movimentos.size();
}
@Override
public int getColumnCount() {
return 10;
}
@Override
public String getColumnName(int columnIndex) {
if (columnIndex == COL_DATA) return "Data";
if (columnIndex == COL_REALIZADO) return "Realizado";
if (columnIndex == COL_DOCUMENTO) return "Documento";
if (columnIndex == COL_CODIGO) return "Código";
if (columnIndex == COL_HISTORICO) return "Histórico";
if (columnIndex == COL_FAVORECIDO) return "Favorecido";
if (columnIndex == COL_ENTRADA) return "Entrada";
if (columnIndex == COL_SAIDA) return "Saída";
if (columnIndex == COL_CONTA) return "Conta";
if (columnIndex == COL_OBRA) return "Obra";
return "";
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == COL_DATA) return Date.class;
else if(columnIndex == COL_REALIZADO) return boolean.class;
else if (columnIndex == COL_DOCUMENTO) return String.class;
else if (columnIndex == COL_CODIGO) return Codigo.class;
else if (columnIndex == COL_HISTORICO) return String.class;
else if (columnIndex == COL_FAVORECIDO) return Favorecido.class;
else if (columnIndex == COL_ENTRADA) return BigDecimal.class;
else if (columnIndex == COL_SAIDA) return BigDecimal.class;
else if (columnIndex == COL_CONTA) return Conta.class;
else if (columnIndex == COL_OBRA) return Obra.class;
return null;
}
@Override
public Object getValueAt(int row, int column) {
MovimentoFinanceiro movimento = movimentos.get(row);
if (column == COL_DATA) return movimento.getData();
else if (column == COL_DOCUMENTO) return movimento.getNumDocumento();
else if (column == COL_CODIGO) return movimento.getCodigo();
else if (column == COL_HISTORICO) return movimento.getHistorico();
else if (column == COL_FAVORECIDO) return movimento.getObra().getFavorecido();
else if (column == COL_ENTRADA) return movimento.getValor();
else if (column == COL_SAIDA) return movimento.getValor();
else if (column == COL_CONTA) return movimento.getConta();
else if (column == COL_OBRA) return movimento.getObra();
return "";
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
MovimentoFinanceiro movimento = movimentos.get(rowIndex);
if (columnIndex == COL_DATA) movimento.setData((Date)aValue);
else if (columnIndex == COL_DOCUMENTO) movimento.setNumDocumento(aValue.toString());
else if (columnIndex == COL_CODIGO) movimento.setCodigo((Codigo)aValue);
else if (columnIndex == COL_HISTORICO) movimento.setHistorico(aValue.toString());
else if (columnIndex == COL_FAVORECIDO) movimento.getObra().setFavorecido((Favorecido)aValue);
else if (columnIndex == COL_ENTRADA)
if(movimento.getTipo().equals("E"))
movimento.setValor((BigDecimal)aValue);
else
movimento.setValor(BigDecimal.ZERO);
else if (columnIndex == COL_SAIDA)
if(movimento.getTipo().equals("S"))
movimento.setValor((BigDecimal)aValue);
else
movimento.setValor(BigDecimal.ZERO);
else if (columnIndex == COL_CONTA) movimento.setConta((Conta)aValue);
else if (columnIndex == COL_OBRA) movimento.setObra((Obra)aValue);
fireTableDataChanged();
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public List<MovimentoFinanceiro> getMovimentos() {
return Collections.unmodifiableList(movimentos);
}
/
public void inserir(MovimentoFinanceiro movimento) {
movimentos.add(movimento);
fireTableRowsInserted(movimentos.size()-1, movimentos.size()-1);
}
public void atualizar(int indice, MovimentoFinanceiro c) {
movimentos.add(indice, c);
this.fireTableRowsUpdated(indice, indice);
}
public void remover(int indice) {
movimentos.remove(indice);
fireTableRowsDeleted(indice, indice);
}
public int getIndice(MovimentoFinanceiro c){
return movimentos.indexOf(c);
}
public MovimentoFinanceiro get(int row) {
return movimentos.get(row);
}
public MovimentoFinanceiro getMovimento(int pos){
if (pos < 0 || pos >= movimentos.size())
return null;
return movimentos.get(pos);
}
}