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 - Creates new form jfConsultas
}
[/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 ???