[RESOLVIDO]TableModel dando erro na inserção de linha

Olá amigos, é o seguinte, quando vou atualizar o valor de uma linha no meu TableModel em alguma das 3 primeiras colunas, ocorre o seguinte erro:

Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “06/04/2011”
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:458)
at java.lang.Integer.parseInt(Integer.java:499)
at util.TransacaoTableModel.setValueAt(TransacaoTableModel.java:135)

Esse erro é na coluna 2 que é String, mas executa esse método que pertence a coluna 3.

Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “Conta1”
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.valueOf(Double.java:475)
at util.TransacaoTableModel.setValueAt(TransacaoTableModel.java:126)

E esse erro é na coluna 0, excutando o método da coluna 1.

Exception in thread “AWT-EventQueue-0” java.lang.NumberFormatException: For input string: “Conta1”
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
at java.lang.Double.valueOf(Double.java:475)
at util.TransacaoTableModel.setValueAt(TransacaoTableModel.java:126)

Eis a classe, espero q alguém possa me dizer oq fiz de errado.

package view;

import control.TransacaoDAO;
import java.awt.Color;
import java.awt.Component;
import java.util.Iterator;
import java.util.List;
import javax.swing.DefaultCellEditor;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import model.Transacao;
import util.TransacaoTableModel;
import util.Utilidades;

public class Principal extends javax.swing.JFrame {

    TransacaoTableModel modelReceitas;
    TransacaoTableModel modelGastos;

    /** Creates new form Principal */
    public Principal() {
        setIconImage(new ImageIcon(getClass().getResource("/icons/cifrao.gif")).getImage());
        initComponents();
        Utilidades u = new Utilidades();        
        modelReceitas = new TransacaoTableModel(new String[] {
			"Descrição", "Valor", "Vencimento", "Parcelas","Recebido"});
        modelGastos = new TransacaoTableModel(new String[] {
			"Descrição", "Valor", "Vencimento", "Parcelas","Pago"});
        tbReceitas.setModel(modelReceitas);
        tbGastos.setModel(modelGastos);
        u.resizeTables(tbReceitas);
        u.resizeTables(tbGastos);
        carregaDados();        
        comboMes.setAlignmentX(CENTER_ALIGNMENT);
        comboAno.setAlignmentX(CENTER_ALIGNMENT);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }

    public void carregaDados(){
        TransacaoDAO dao = new TransacaoDAO();
        List<Transacao> lista = dao.pesquisaTodos();
        String valor;
        Utilidades u = new Utilidades();
        if(lista.isEmpty())
            return;
        Transacao ts = new Transacao();
        int linhaGastos = 0;
        Double totalReceitas = 0.00;
        Double totalGastos = 0.00;
        Double saldo = 0.00;
        for(Iterator it = lista.iterator();it.hasNext();){
            ts = (Transacao)it.next();
            valor = u.formataValor(ts.getValor());
            if(ts.getTipo().equals("Receita")){
                totalReceitas = totalReceitas+ts.getValor();
                modelReceitas.addTransacao(ts);
            }else if(ts.getTipo().equals("Gasto")){
                totalGastos = totalGastos+ts.getValor();
                modelGastos.addTransacao(ts);
            }
        }
        /*String[]valuesReceita = {"Recebido","Não Recebido"};
        String[]valuesGastos = {"Pago","Não Pago"};
        TableColumn col = tbReceitas.getColumnModel().getColumn(4);
        col.setCellEditor(new MyComboBoxEditor(valuesReceita));
        col.setCellRenderer(new MyComboBoxRenderer(valuesReceita));
        col = tbGastos.getColumnModel().getColumn(4);
        col.setCellEditor(new MyComboBoxEditor(valuesGastos));
        col.setCellRenderer(new MyComboBoxRenderer(valuesGastos));*/
        saldo = totalReceitas - totalGastos;
        tfReceitas.setText(u.formataValor(totalReceitas));
        tfGastos.setText(u.formataValor(totalGastos));
        tfSaldo.setText(u.formataValor(saldo));
    }

   @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        tbReceitas = new javax.swing.JTable();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        tbGastos = new javax.swing.JTable();
        comboMes = new javax.swing.JComboBox();
        comboAno = new javax.swing.JComboBox();
        jToolBar1 = new javax.swing.JToolBar();
        btAddTrasacao = new javax.swing.JButton();
        btUpTransacao = new javax.swing.JButton();
        btDelTransacao = new javax.swing.JButton();
        jLabel1 = new javax.swing.JLabel();
        labelReceitas = new javax.swing.JLabel();
        tfReceitas = new javax.swing.JTextField();
        labelGastos = new javax.swing.JLabel();
        tfGastos = new javax.swing.JTextField();
        jSeparator1 = new javax.swing.JSeparator();
        labelSaldo = new javax.swing.JLabel();
        tfSaldo = new javax.swing.JTextField();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Cash Control");
        setMinimumSize(new java.awt.Dimension(800, 600));
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                formWindowClosing(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Receitas"));

        tbReceitas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Descrição", "Valor", "Vencimento", "Parcelas", "Recebido"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Boolean.class
            };
            boolean[] canEdit = new boolean [] {
                false, true, true, true, true
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        tbReceitas.setRowHeight(20);
        jScrollPane1.setViewportView(tbReceitas);
        tbReceitas.getColumnModel().getColumn(1).setResizable(false);
        tbReceitas.getColumnModel().getColumn(2).setResizable(false);
        tbReceitas.getColumnModel().getColumn(3).setResizable(false);
        tbReceitas.getColumnModel().getColumn(4).setResizable(false);

        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 885, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
                .addContainerGap())
        );

        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Gastos"));

        tbGastos.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Descrição", "Valor", "Vencimento", "Parcelas", "Pago"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Boolean.class
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }
        });
        tbGastos.setRowHeight(20);
        jScrollPane2.setViewportView(tbGastos);

        org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 885, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .add(jScrollPane2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 214, Short.MAX_VALUE)
                .addContainerGap())
        );

        comboMes.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" }));

        comboAno.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Ano", "2011" }));

        jToolBar1.setRollover(true);

        btAddTrasacao.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/cadastrar.png"))); // NOI18N
        btAddTrasacao.setToolTipText("Nova Transação");
        btAddTrasacao.setFocusable(false);
        btAddTrasacao.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btAddTrasacao.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(btAddTrasacao);

        btUpTransacao.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/alterar.png"))); // NOI18N
        btUpTransacao.setToolTipText("Alterar Transação");
        btUpTransacao.setFocusable(false);
        btUpTransacao.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btUpTransacao.setMaximumSize(new java.awt.Dimension(41, 40));
        btUpTransacao.setMinimumSize(new java.awt.Dimension(30, 34));
        btUpTransacao.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(btUpTransacao);

        btDelTransacao.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/excluir.png"))); // NOI18N
        btDelTransacao.setFocusable(false);
        btDelTransacao.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btDelTransacao.setMaximumSize(new java.awt.Dimension(41, 40));
        btDelTransacao.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jToolBar1.add(btDelTransacao);

        jLabel1.setBackground(new java.awt.Color(24, 33, 214));
        jLabel1.setFont(new java.awt.Font("Lucida Grande", 1, 13));
        jLabel1.setForeground(new java.awt.Color(0, 0, 255));
        jLabel1.setText("Desenvolvido por Hugo da Silva Gomes");

        labelReceitas.setText("Total de Receitas");

        labelGastos.setText("Total de Gastos");

        labelSaldo.setText("Saldo Mensal");

        jMenu1.setText("Sobre");
        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .addContainerGap()
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(labelReceitas)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(tfReceitas, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 101, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .add(layout.createSequentialGroup()
                        .add(comboMes, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(comboAno, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
                        .add(labelSaldo)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(tfSaldo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 96, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 492, Short.MAX_VALUE)
                        .add(jLabel1))
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .add(layout.createSequentialGroup()
                        .add(labelGastos)
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(tfGastos, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 106, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .add(org.jdesktop.layout.GroupLayout.TRAILING, jSeparator1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 933, Short.MAX_VALUE))
                .addContainerGap())
            .add(org.jdesktop.layout.GroupLayout.TRAILING, jToolBar1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 973, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(jToolBar1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(9, 9, 9)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(comboMes, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 29, Short.MAX_VALUE)
                    .add(comboAno, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(6, 6, 6)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(tfReceitas, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(labelReceitas))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(0, 0, 0)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(labelGastos)
                    .add(tfGastos, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
                .add(jSeparator1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 10, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                    .add(layout.createSequentialGroup()
                        .add(28, 28, 28)
                        .add(jLabel1))
                    .add(layout.createSequentialGroup()
                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                        .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                            .add(labelSaldo)
                            .add(tfSaldo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap())
        );

        pack();
    }// </editor-fold>

   private void formWindowClosing(java.awt.event.WindowEvent evt) {
       //JOptionPane.showMessageDialog(null, "Funciona!");
       System.exit(0);
   }

    

    // Variables declaration - do not modify
    private javax.swing.JButton btAddTrasacao;
    private javax.swing.JButton btDelTransacao;
    private javax.swing.JButton btUpTransacao;
    private javax.swing.JComboBox comboAno;
    private javax.swing.JComboBox comboMes;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JLabel labelGastos;
    private javax.swing.JLabel labelReceitas;
    private javax.swing.JLabel labelSaldo;
    private javax.swing.JTable tbGastos;
    private javax.swing.JTable tbReceitas;
    private javax.swing.JTextField tfGastos;
    private javax.swing.JTextField tfReceitas;
    private javax.swing.JTextField tfSaldo;
    // End of variables declaration

    public class MyComboBoxRenderer extends JComboBox implements
TableCellRenderer {
        public MyComboBoxRenderer(String[] items) {
            super(items);
        }            public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {            if (isSelected) {
                setForeground(Color.BLACK);
               super.setBackground(table.getSelectionBackground());
            } else {
                setForeground(table.getForeground());
                setBackground(table.getBackground());
            }                setSelectedItem(value);
            return this;
        }
    }        public class MyComboBoxEditor extends DefaultCellEditor {
        public MyComboBoxEditor(String[] items) {
            super(new JComboBox(items));
        }
    }
}

Você provavelmente está retornando um tipo numérico para a coluna de data.

Na verdade, ao invés de fazer uma inner class anonima e filha de DefaultTableModel, crie seu próprio TableModel diretamente, filho de AbstractTableModel, como uma classe separada, e implemente lá o método setValueAt. É importante que você entenda exatamente como o TableModel funciona.

Desculpa meu amigo, agora que vi a grosseria que fiz mandando a classe errada, na verdade eu fiz o meu TableModel sim, mas mandei a classe errada, rs. Eis o método que está dando problema.

[code]@Override
public void setValueAt(Object valor, int rowIndex, int columnIndex) {
Transacao Transacao = linhas.get(rowIndex);
JOptionPane.showMessageDialog(null, columnIndex);

     switch (columnIndex) {
	case 0:
		Transacao.setDescricao(valor.toString());
	case 1:
		Transacao.setValor(Double.valueOf(valor.toString()));
	case 2: 
		Transacao.setVencimento(valor.toString());
	case 3:
		Transacao.setnParcelas(Integer.parseInt(valor.toString()));
            case 4:
		Transacao.setConcluido(Boolean.parseBoolean(valor.toString()));
            default:
	}
     fireTableDataChanged();

}[/code]

Curiosamente o método que retorna esses valores está funcionando direitinho.

[code]@Override
public Object getValueAt(int rowIndex, int columnIndex) {
// Pega o sócio da linha especificada.
Transacao Transacao = linhas.get(rowIndex);

	// Retorna o campo referente a coluna especificada.
	// Aqui é feito um switch para verificar qual é a coluna
	// e retornar o campo adequado. As colunas são as mesmas
	// que foram especificadas no array "colunas".
	switch (columnIndex) {
	case 0: // Primeira coluna é a descrição.
		return Transacao.getDescricao();
	case 1: // Segunda coluna é o valor.
		return Transacao.getValor();
	case 2: // Terceira coluna é o vencimento.
		return Transacao.getVencimento();
	case 3: // Quarta coluna é o número de parcelas.
		return Transacao.getnParcelas();
            case 4: // Quarta coluna é a situação da transação.
		return Transacao.isConcluido();
	default:
		// Se o índice da coluna não for válido, lança um
		// IndexOutOfBoundsException (Exceção de índice fora dos limites).
		// Não foi necessário verificar se o índice da linha é inválido,
		// pois o próprio ArrayList lança a exceção caso seja inválido.
		throw new IndexOutOfBoundsException("columnIndex out of bounds");
	}
}[/code]

Por favor alguém me ajude, preciso resolver esse erro até amanhã.

Acabou que resolvi sozinho, eu tinha que colocar o comando break para cada case, pois o JTable estava usando o mesmo valor para os outros cases. Ficou assim:

@Override public void setValueAt(Object valor, int rowIndex, int columnIndex) { Transacao Transacao = linhas.get(rowIndex); switch (columnIndex) { case 0: Transacao.setDescricao(valor.toString()); break; case 1: Transacao.setValor(Double.parseDouble(valor.toString().substring(3,6))); break; case 2: Transacao.setVencimento(valor.toString()); break; case 3: Transacao.setnParcelas((Integer)valor); break; case 4: Transacao.setConcluido(Boolean.parseBoolean(valor.toString())); break; } fireTableDataChanged(); }