estou tentando passar os dados do meu objeto List(é uma consulta a um banco de dados) para o meu jtable, problema é que quando adiciono a linha, ele me retorna nao os dados do List, e sim o codigo de cada linha(Exemplo: [Ljava.lang.Object;@3126d4). Qual metodo eu uso pra capturar os dados de cada linha do List?? Seuqe a parte do meu codigo q tá dando pau… na linha vermelha q eu acho q ta o problema…
[Ljava.lang.Object;@3126d4
public inicioJF() {
List lista;
List list;
int i = 0;
Consultas consulta = new Consultas();
SimpleDateFormat dt = new SimpleDateFormat(“MMM-yy”);
lista = consulta.consConta();
initComponents();
JTable tab = this.tabela;
DefaultTableModel model = (DefaultTableModel) tab.getModel();
for (i=0;i<=lista.size()-1;i++){
[color=red]model.addRow(new Object[]{lista.get(i)});[/color]
Suponha que temos uma tabela com 5 colunas e um (ArrayList<Aluno> lista) com varios campos (codigo, nome, telefone, curso, cidade)
voçê tera que fazer assim
NÃO use DefaultTableModel, siga os links na minha assinatura para aprender como se livrar dele, com um TableModel proprio, voce vai passar diretamente sua lista de dados sem ter que fazer essa gambiarra de ficar montando vetores de valores.
´public class TableModelComputadores extends AbstractTableModel {
private List<ComputadoresBean> comp;
public TableModelComputadores() {
// no construtor, instanciamos o List
comp = new ArrayList<ComputadoresBean>();
}
/**
* Criamos um construtor de conveniencia para ja popular a lista.
*
* @param lista
* a lista de clientes a ser adicionada.
*/
public TableModelComputadores(List<ComputadoresBean> lista) {
this();
comp.addAll(lista);
}
@Override
public Class<?> getColumnClass(int coluna) {
// todas as colunas representam uma String
return String.class;
}
@Override
public int getColumnCount() {
return 5;
}
@Override
public String getColumnName(int coluna) {
// vamos retornar o nome de cada coluna
switch (coluna) {
case 0:
return "ID";
case 1:
return "Data de CADASTRO";
case 2:
return "Equipamento";
case 3:
return "Nome";
case 4:
return "Serial";
default:
return "";
}
}
@Override
public int getRowCount() {
return comp.size();
}
@Override
public Object getValueAt(int linha, int coluna) {
ComputadoresBean cb = comp.get(linha);
switch (coluna) {
case 0:
return cb.getId(); // retornamos o ID
case 1:
return cb.getData(); // retornamos a Data
case 2:
return cb.getTipo(); // tipo
case 3:
return cb.getNome(); // nome
case 4:
return cb.getSerial(); // serial
default:
return null; // isso nunca deve ocorrer, pois temos so 5 colunas
}
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
public void setValueAt(Object valor, int linha, int coluna) {
ComputadoresBean cb = comp.get(linha);
switch (coluna) {
case 0:
cb.setId(Integer.parseInt(valor.toString())); // mudamos o ID
break;
case 1:
cb.setData(valor.toString()); // mudar
break;
case 2:
cb.setTipo(valor.toString()); //mudar ....
break;
case 3:
cb.setNome(valor.toString()); // mudar....
break;
case 4:
cb.setSerial(valor.toString()); // mudar....
break;
}
// � importante notificar os listeners a cada alteracao
fireTableDataChanged();
}
public void adiciona(ComputadoresBean cb) {
comp.add(cb);
fireTableRowsInserted(comp.size() - 1, comp.size() - 1);
}
public void remove(int indice) {
comp.remove(indice);
fireTableRowsDeleted(indice, indice);
}
public int getIndice(ComputadoresBean cb) {
return comp.indexOf(cb);
}
public void adicionaLista(List<ComputadoresBean> lista) {
int i = comp.size();
comp.addAll(lista);
fireTableRowsInserted(i, i + lista.size());
}
public void limpaLista() {
int i = comp.size();
comp.clear();
fireTableRowsDeleted(0, i - 1);
}
}
Tenho uma JTable desenhada em minha aplicação, quero que ao clicar no botao preencha a JTable com os dados da TableModel.