Preciso usar isso usando um padrão

9 respostas
S

pessoal tenho esse codigo para popular uma jtable... porem não tem padrão nenhum.... eu keria jogar esse metodo no meu dao e chamar ele pelo view para popular.
alguem pode me ajudar?

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   
List <Cliente> list_cliente = new ArrayList<Cliente>();

try{
        Cliente cliente = new Cliente();

        Connection conn = ConectionBD.getConnection();
        String sql = null;
        sql = "select * from cliente";
        PreparedStatement pst = conn.prepareStatement(sql);
        ResultSet rs = pst.executeQuery();
        
DefaultTableModel modelo = new DefaultTableModel();  
modelo.addColumn(new String[]{"rua", "numero"});   
        while (rs.next()) {   
    modelo.addRow(new Object[]{rs.getString("rua"), rs.getInt("numero")});
    
    modelo.addColumn(new Object[]{rs.getInt("telefone")});

   
   
}
jTable1.setModel(modelo);
}catch(Exception e){}
se eu fosse colocar esse código no dao e fosse chamar pela view eu iria fazer assim + ou -
Ifachada fachada = new Fachada(cliente)

9 Respostas

luciano2

Não entendi sua duvida. Fiquei com a impressão que você estava querendo implementar um factory Method.

S

akele codigo esta na minha view… ou seja sem padrão nehum… eu keria colocar akele codigo na minha camada de persistencia, porem não estou conseguindo chamar ele pela view dpw q colocar no DAO.

luciano2

Cara você coloca o código no seu Dao em algum método.

Se você te um facade entre o dao e a view você vai apenas instanciar o facade dentro do método actionPerformed e chamar o método.

Lembrando que você está usando uma interface IFachada para receber uma instância de Fachada, Logo sua interface tem que ter a assinatura do método que você vai chamar na view.

S

eu estava tentando fazer algo aki mais não rolou....

IFachada fachada = new Fachada();
                       Cliente cliente = new Cliente();
                    List<Cliente> list_cliente = fachada.Clientes(cliente);

            DefaultTableModel modelo = new DefaultTableModel();
            for(Cliente listcli: list_cliente){
                modelo.addRow(new Object[]{listcli.getNome()});
                jTable1.setModel(modelo);
luciano2

Mas oque é que está acontecendo?

Ta dando exception? Ta compilando?

S
consegui fazer + ou - assim:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         



        try {
            IFachada fachada = new Fachada();
             Cliente cliente = new Cliente();
      // DefaultTableModel modelo = new DefaultTableModel();
DefaultTableModel modelo = new DefaultTableModel(new Object[] {"UM", "DOIS", "TRES"}, 0);
           List<Cliente> list_cliente = fachada.Clientes(cliente);
  //String[] tableColumnsName = {"Endereco","CPF","Teste"};
  // modelo.setColumnIdentifiers(tableColumnsName);


            for(Cliente listcli: list_cliente){


         modelo.addColumn(new Object[]{listcli.getNome(),listcli.getCPF(),listcli.getEndereco().getRua()});
         modelo.addRow(new Object[]{listcli.getNome(),listcli.getCPF(),listcli.getEndereco().getRua()});

       
jTable1.setModel(modelo);

            }}catch(Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, e.getMessage());

so que na table aparece uma coluna em branco com o titulo Ljava.lang.Obejcts.@.......
[img]C:\Users\jhonatan\Desktop\espaco em branco.jpg[/img]

luciano2

Não entendo o porque de

Da uma olhada na especificação de DefaultTableModel e você vai ver que addColumn não recebe array de objetos.

S

entendi o q vc falo... eu coloquei os nomes das colunas qdo instanciei defaulttablemodel
porem msm com o metodo de consulta de retornar todos.. ele apenas me retornou o ultimo dado da tabela...

veja meu metodo de consulta.

public List Clientes(DomainObject domainObject) throws SQLException {
    List <Cliente> list_cliente = new ArrayList<Cliente>();

    try{
    Cliente cliente = (Cliente)domainObject;

    Connection conn = ConectionBD.getConnection();
    String sql = null;
    sql = "select * from cliente order by idcliente";
    PreparedStatement pst = conn.prepareStatement(sql);
    ResultSet rs = pst.executeQuery();

  

while (rs.next()) {
    Endereco endereco = new Endereco();
    endereco.setRua(rs.getString("rua"));
    endereco.setNumero(rs.getInt("numero"));
    endereco.setCidade(rs.getString("cidade"));
    endereco.setBairro(rs.getString("bairro"));
    cliente.setEndereco(endereco);


    cliente.setCPF(rs.getInt("cpf"));
    cliente.setNome(rs.getString("nome"));
    cliente.setTelefone(rs.getInt("telefone"));
    cliente.setID(rs.getInt("idcliente"));
    list_cliente.add(cliente);
    }}catch(Exception e){
    e.printStackTrace();
    JOptionPane.showMessageDialog(null, e.getMessage());
    }
    return list_cliente;
    }
luciano2

Cara sua consulta está retornando apenas o ultimo? ou o ultimo repetido várias vezes?

Pelo que eu estou vendo você está utilizando o mesmo objeto Cliente dentro do While para adicionar na Lista.

Para cada registro dentro do seu resultSet você tem que instanciar o cliente de novo, senão oque você vai estar fazendo é instanciar cliente, alterar os valores e colocar denovo na lista.

Criado 27 de maio de 2010
Ultima resposta 31 de mai. de 2010
Respostas 9
Participantes 2