Então, eu tenho que imprimir uma ArrayList em um JTable e não to conseguindo fazer, to usando DefaultTablemodel porque não sei usar outro modelo, ja li sobre outros mas não tenho capacidade pra usa-los. Quando eu imprimo o ArrayList, que pega os dados salvos no banco SQL vem um código em vez do que eu coloquei, exemplo: Eu coloco Maria e o ArrayList imprime modelo.Livro@139eeda, o que fazer? O Array ta imprimindo no printLn porque eu não consigo colocar na JTable. Alguém me ajuda?
Imprimir ArrayList
7 Respostas
Você tem que colocar a posição do ArrayList que voce quer imprimir…
Exemplo…
System.out.println(maria.get(posicao));
Exemplo de como colocar um array dentro de uma jTable
List<ClentesTO> lista = dao.consultarMaria();
int x = 0;
DefaultTableModel modelo = (DefaultTableModel) TUATABELA.getModel();
modelo.setNumRows(0);
while (x < lista.size()) {
// Configura a Jtable para receber os dados.
TUATABELA.getColumnModel().getColumn(0).setPreferredWidth(190);
TUATABELA.getColumnModel().getColumn(1).setPreferredWidth(50);
TUATABELA.getColumnModel().getColumn(2).setPreferredWidth(50);
TUATABELA.getColumnModel().getColumn(3).setPreferredWidth(50);
Object colunas[] = {"Cliente", "Data", "Idade", "CPF"};
// popula o JTable.
modelo.addRow(new Object[]{lista.get(x).getNome_cliente(),lista.get(x).getCPF(),lista.get(x).getIdade(),lista.get(x).getCPF()});
x++;
}
Mas o problema é que eu imprimo o ArrayList e vem uns códigos e não as coisas que tão realmente no lugar do banco aonde a Array ta pegando os dados.
Posta o código da tua classe, teu controlle e teu DAO
package persistencia;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
import modelo.Livro;
public class PerLivro {
public void gravar(Livro livro){
String sql="insert into livros(Titulo,Autor,Editora,Genero,Isbn,Edicao,Tipo)values(?,?,?,?,?,?,?)";
try{
Connection conn=Conexao.getConexao();
PreparedStatement pst=conn.prepareStatement(sql);
pst.setString(1,livro.getTitulo());
pst.setString(2, livro.getAutor());
pst.setString(3, livro.getEditora());
pst.setString(4, livro.getGenero());
pst.setString(5, livro.getIsbn());
pst.setInt(6, livro.getEdicao());
pst.setString(7, livro.getTipo());
pst.executeUpdate();
}catch(Exception e){
System.out.println("Erro ao gravar livro "+e.toString());
}
}
public ArrayList<Livro>listar(){
String sql="select * from livros";
try{
Connection conn=Conexao.getConexao();
PreparedStatement pst=conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
ArrayList<Livro> livros= new ArrayList<Livro>();
Livro livro;
while(rs.next()){
livro=new Livro();
livro.setTitulo(rs.getString(1));
livro.setAutor(rs.getString(2));
livro.setEditora(rs.getString(3));
livro.setGenero(rs.getString(4));
livro.setIsbn(rs.getString(5));
livro.setEdicao(rs.getInt(6));
livro.setTipo(rs.getString(7));
livros.add(livro);
}
return livros;
}catch(Exception e){
System.out.println("Erro ao gravar livro "+e.toString());
return null;
}
}
create database biblioteca --cria banco de dados
go
use biblioteca --usa o banco de dados
go
create table livros( --cria a tabela e atributos
Titulo varchar(60)not null,
Autor varchar(60),
Editora varchar(60),
Gênero varchar(60),
Isbn varchar(20),
Edição int,
Tipo varchar(20))
go
select *
from livros
Ao invés de perder tempo entendendo como fazer o Default funcionar direito, perca tempo aprendendo a não usar o Default. Você tem capacidade de usar outros modelos sim, pois é bem mais fácil que usar o Default. Só exige um pouquinho de estudo.
Nos links da minha assinatura tem exemplos, inclusive usando um ArrayList de livros.
Insistir no Default vai te custar muito caro.
Já vi que eu vou ter que usar um modelo diferente do Default mesmo, triste vida. Obrigado mesmo assim.
Mas da pra usar esse DafaultTableModel em uma tela construida pelo construtor de tela?