JTable + java.lang.ClassCastException

Olá estou tentando passar uma tabele do meu banco para um JTable:

ClienteTableModel:

[code]package locadora.gui.tabela;

import java.util.;
import java.text.
;
import javax.swing.table.*;
import locadora.vo.Cliente;

public class ClienteTableModel extends AbstractTableModel {
private ArrayList clientes;
//private List setoresFiltrados;
private boolean ordenarPorNome = true;
/** Creates a new instance of TarefasTableModel */
public ClienteTableModel(ArrayList clientes) {
this.clientes=clientes;
}

public Object getValueAt(int rowIndex, int columnIndex) {
   // Livro umLivro = livros.get(rowIndex);
    Cliente cli = clientes.get(rowIndex);
    switch(columnIndex) {
        case 0: return cli.getNome();
        case 1: return cli.getDataNasc();
        case 2: return cli.getLimiteConta();            
          }
    return null;
}

public int getRowCount() {
    return clientes.size();
}

public int getColumnCount() {
    return 3;
}

public Cliente getValoresCliente(int rowIndex) {
    //if (rowIndex > setoresFiltrados.size())
    //    return null;
    //else
        return clientes.get(rowIndex);
}


public boolean isOrdenarPorNome() {
    return ordenarPorNome;
}

public void setOrdenarPorNome(boolean ordenarPorNome) {
    this.ordenarPorNome = ordenarPorNome;
}  

}[/code]

ClienteCellRenderer:

[code]package locadora.gui.tabela;

import java.util.*;

import java.awt.;
import javax.swing.JLabel;
import javax.swing.table.
;
import locadora.vo.Cliente;
/**
*
*
*/
public class ClienteCellRenderer extends DefaultTableCellRenderer{

/**
 * Creates a new instance of LivroCellRenderer
 */
public ClienteCellRenderer() {
    super();
}

public Component getTableCellRendererComponent (
javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus,int row, int column) {

    JLabel label = (JLabel)super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
    
    if (column != 1)
        label.setHorizontalAlignment(JLabel.CENTER);
    
    TableModel tm = table.getModel();
    
    Cliente cli = ((ClienteTableModel)tm).getValoresCliente(row);
    
    if (isSelected) {
        label.setForeground(Color.getHSBColor(100, 40, 190));
        label.setBackground(Color.GRAY);
    } else {
        label.setForeground(Color.BLACK);
        label.setBackground(Color.getHSBColor(100, 40, 190));
    }
    
    return label;
}

}
[/code]

ClienteColumnModel:

[code]package locadora.gui.tabela;

import java.awt.;
import javax.swing.table.
;

public class ClienteColumnModel extends DefaultTableColumnModel{
private TableColumn criaColuna(int columnIndex, int largura,FontMetrics fm, boolean resizeable, String titulo) {
int larguraTitulo = fm.stringWidth(titulo + " ");
if (largura < larguraTitulo)
largura = larguraTitulo;

    TableColumn col = new TableColumn(columnIndex);
    
    col.setCellRenderer(new ClienteCellRenderer());
    col.setHeaderRenderer(null);
    col.setHeaderValue(titulo);
    col.setPreferredWidth(largura);
    if (!resizeable) {
        col.setMaxWidth(largura);
        col.setMinWidth(largura);
    }
    col.setResizable(resizeable);
    return col;
}
/** Creates a new instance of TarefasColumnModel */
public ClienteColumnModel(FontMetrics fm) {
    int digito = fm.stringWidth("0");
    int letra = fm.stringWidth("M");
    addColumn(criaColuna(0, 50 * letra, fm, false, "Nome"));
    addColumn(criaColuna(1, 10 * letra, fm, true, "Data Nascimento"));
    addColumn(criaColuna(2, 50 * digito, fm, true, "Limite"));
}

}
[/code]

eo JFrame:

[code]package locadora.gui;

import com.sun.crypto.provider.RSACipher;
import java.awt.FontMetrics;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import locadora.dao.ClienteDAO;
import locadora.vo.Cliente;
import locadora.gui.tabela.ClienteTableModel;

/**
*

  • @author pessoal
    */
    public class jfConsultas extends jfBase {

    /**

    • Creates new form jfConsultas
      */

    public jfConsultas() {
    locadora.db.Conexao.conectar();

     initComponents();
    
     tClientes.setAutoCreateColumnsFromModel(false);
     java.awt.FontMetrics fm = tClientes.getFontMetrics(tClientes.getFont());
    
     setLocationRelativeTo( null );
    

    }

    /** This method is called from within the constructor to

    • initialize the form.

    • WARNING: Do NOT modify this code. The content of this method is

    • always regenerated by the Form Editor.
      */
      //
      private void initComponents() {
      jTabbedPane1 = new javax.swing.JTabbedPane();
      jPanel1 = new javax.swing.JPanel();
      jScrollPane1 = new javax.swing.JScrollPane();
      tClientes = new javax.swing.JTable();
      bCarregarTableClientes = new javax.swing.JButton();

      setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      jScrollPane1.setAutoscrolls(true);
      tClientes.setModel(new javax.swing.table.DefaultTableModel(
      new Object [][] {
      {null, null, null, null}
      },
      new String [] {
      “Título 1”, “Título 2”, “Título 3”, “Título 4”
      }
      ));
      jScrollPane1.setViewportView(tClientes);

      bCarregarTableClientes.setText(“Carrega Table”);
      bCarregarTableClientes.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(java.awt.event.ActionEvent evt) {
      bCarregarTableClientesActionPerformed(evt);
      }
      });

      javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
      jPanel1.setLayout(jPanel1Layout);
      jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(29, 29, 29)
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
      .addGroup(jPanel1Layout.createSequentialGroup()
      .addGap(90, 90, 90)
      .addComponent(bCarregarTableClientes)))
      .addContainerGap(68, Short.MAX_VALUE))
      );
      jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
      .addGap(31, 31, 31)
      .addComponent(bCarregarTableClientes)
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 273, javax.swing.GroupLayout.PREFERRED_SIZE)
      .addGap(28, 28, 28))
      );
      jTabbedPane1.addTab(“tab1”, jPanel1);

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addContainerGap()
      .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 556, Short.MAX_VALUE)
      .addContainerGap())
      );
      layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
      .addGroup(layout.createSequentialGroup()
      .addGap(60, 60, 60)
      .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 411, Short.MAX_VALUE)
      .addContainerGap())
      );
      pack();
      }//

    private void bCarregarTableClientesActionPerformed(java.awt.event.ActionEvent evt) {
    ArrayList clientes = new ArrayList();
    ClienteDAO cliDAO = new ClienteDAO();
    try {
    clientes=cliDAO.pegaTodos();
    } catch (Exception e) {

     }
     ClienteTableModel modelCliente = new ClienteTableModel(clientes);
     tClientes.setModel(modelCliente);
    

    }

    /**

    • @param args the command line arguments
      */
      public static void main(String args[]) {
      java.awt.EventQueue.invokeLater(new Runnable() {
      public void run() {
      new jfConsultas().setVisible(true);
      }
      });
      }

    // Declaração de variáveis - não modifique
    private javax.swing.JButton bCarregarTableClientes;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTable tClientes;
    // Fim da declaração de variáveis

}

[/code]

no método bCarregarTableClientesActionPerformed da o seguinte erro:

Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to locadora.vo.Cliente

pq ele esta acontecendo ???

Não tenho certeza pq não vi sua classe ClienteDAO, mas o problema pode estar acontecento na linha 125 do codigo do frame que voce postou no metodo bCarregarTableClientesActionPerformed.

O problema seria o seguinte, quando voce vai passar as informações para a classe cliente no seu Dao esta ocorrendo algum problema de Cast. Teria como postar para agente dar uma olhada, mais uma coisa teria como informar em que linha realmente o problema está ocorrendo, eu apenas chutei que poderia ser na 125.

flw

Paulo