Fórum Inserir um DefaultTableModel em um JTable #569512

09/04/2009

0

Bom dia amigos, estou com o seguinte problema...tenho uma classe que faz consulta num banco e monta um DefaultTableModel e nele um mando inserir os registros (addRows) e o metodo dessa classe retorna o model montado para a classe que possui um jframe e um jtable, mas nao estou conseguindo colocar esse model dentro do jtable...isso é possivel? muito obrigado. Abraços.
Thiago Pedroso

Thiago Pedroso

Responder

Posts

09/04/2009

Alexandre Viriato

[quote="tap_pedroso"]Bom dia amigos, estou com o seguinte problema...tenho uma classe que faz consulta num banco e monta um DefaultTableModel e nele um mando inserir os registros (addRows) e o metodo dessa classe retorna o model montado para a classe que possui um jframe e um jtable, mas nao estou conseguindo colocar esse model dentro do jtable...isso é possivel? muito obrigado. Abraços.
Não entendi muito bem o que você quer fazer, mas seria isso:
DefaultTableModel model = new DefaultTableModel(); //pegar seu model aqui
JTable table = new JTable(model);
//ou table.setModel(model);
ou então, vê se [url=http://www.javafree.org/javabb/viewtopic.jbb?t=868498]esse tópico[/url] te ajuda. Abraços.
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

assim não deu certo...o meu jtable fica em branco, eu ja tenho o jtable no jframe e fiz jtbItens.setModel(tabmodel); e ele ficou vazio, sumiu as colunas...o q acontece é q estou tentando trabalhar com socket e eu tenho uma aplicação server q faz uma consulta sql e coloca os dados num Model e aí eu mando esse model para a aplicação client que deveria importar esse model para dentro do jtable...entendeu? obrigado amigo.
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

amigo, referente ao link q vc me passou existe um bloco que é assim: [b] Cliente C = new Cliente(); [/b] C.setCodigo(R.getString("Codigo")); C.setNome(R.getString("Nome")); C.setEndereco(R.getString("Enderceo")); C.setTel_cel(R.getString("Tel_Cel")); e a linha em negrito, no caso Cliente não é declarado em lugar algum...como é essa declaração?
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

[quote="tap_pedroso"]amigo, referente ao link q vc me passou existe um bloco que é assim: [b] Cliente C = new Cliente(); [/b] C.setCodigo(R.getString("Codigo")); C.setNome(R.getString("Nome")); C.setEndereco(R.getString("Enderceo")); C.setTel_cel(R.getString("Tel_Cel")); e a linha em negrito, no caso Cliente não é declarado em lugar algum...como é essa declaração?
Cliente eh uma classe onde possui seus respectivos metodos encapsuladores de acordo com os atributos da tabela Cliente do bd, Jah o [b]C(deveria ser c "minusculo")[/b] eh uma instancia de um objeto criado do tipo da classe Cliente para poder ter acesso a esses respectivos metodos encapsuladores(gets e sets da vida) da mesma. dica: sempre qdo for postar codigos coloque-os entre as tags [b]code[/b]
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

oi, amigo, agora entendi e consegui montar aqui o vetor, fiz exatamento igual ao exemplo que me indicou...é assim mesmo que eu preciso mas o problema é que não consigo serializar ele...estou tentando transmitir por um socket esse vetor mas quando dou um writeobject ocorre o erro de Notserializable...até agora so consegui transmitir pelo socket um ArrayList, mas dessa maneira quando recebo os dados na aplicação client eu tenho q dar um loop no ArrayList e ficar dando um split, por exemplo:
 ArrayList lista= sckcli.solicitaConsulta();
        DefaultTableModel tabmodel = (DefaultTableModel)jtbitens.getModel(); 
        tabmodel.setNumRows(0);
        for (int i=0;i<lista.size();i++){
         String ln = (String) lista.get(i);
         String resln[] = ln.split(";");
         
         tabmodel.addRow(new Object[]{resln[0],resln[1],resln[2],resln[3]});
        }  
e la no server eu separo os campos q retornou da consulta SQL com ";"... dessa maneira que me mostrou com vetor ou algo semelhante é o ideal mas eu preciso transportar pelo serversockt...entendeu? obrigado.
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

olha, resolvi o problema, consegui transmitir o vetor...mas agora estou com outro rsrsrs...da uma olhada no codigo:

import java.io.Serializable;
import java.util.Vector;
public class produto implements Serializable {
    private String codbar   = null;  
    private String descr     = null;  
    private String icms = null;  
    private String valor     = null;      
    /** Creates a new instance of produto */
 public String getCodBar() {  
       return codbar;  
    }  
    public void setCodigo(String codbar) {  
       this.codbar = codbar;  
    }  
    public String getdescr() {  
       return descr;  
    }  
    public void setdescr(String descr) {  
       this.descr = descr;  
    }  
    public String getIcms() {  
       return icms;  
    }  
    public void setIcms(String icms) {  
       this.icms = icms;  
    }  
    public String getValor() {  
       return valor;  
    }  
    public void setValor(String valor) {  
       this.valor = valor;  
    }   
    
    
}

agora vem uma parte onde monto o vetor com os dados:

                              conn_server.ExecuteSQL("Select * FROM TABPRODUTOS where DESCRICAO LIKE '%"+vrpesq+"%'");   
                              ResultSet result = conn_server.res;                        
                              produto P = new produto();
                              Vector V = new Vector();
                              try {
                          
                                  while(result.next()){
                                      
                                    P.setCodigo(result.getString("CODBARRAS")+i);
                                    P.setdescr(result.getString("DESCRICAO")+i);
                                    P.setIcms(result.getString("ALIQICMS")+i);
                                    P.setValor(result.getString("VRVENDA")+i);
                                    V.add(P);
                       
                                  }
                                  
                              } catch (SQLException ex) {
                                  ex.printStackTrace();
                              }
                                objsaida.writeObject(V);

o problema está na segunda parte...o que acontece é q as posições do vetor estão sendo sobreescritas por exemplo...coloquei um breakpoint e vi que V[0] fica codbar="91", descr="teste" aí vai para outro registro que seria codbar="92" e descr="teste2"...aí quando acontece o V.add(P) que gera o V[1] o V[0] passa a ser igual ao V[1] ou seja, sempre assume os valores do ultimo registro adicionado em todas as posições...o q está acontecendo? muito obrigado.
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

Eh óbvio q isso vai acontecer, vai ter q instanciar o objeto Produto dentro do laço, e nao fora como vc estah fazendo, pois para cada registro e criado um novo objeto a cada interação, do jeito q vc estah fazendo sempre vai sobrepor o ultimo. eh soh fazer isso:
produto P = null;//tudo ao contrario o correto seria Produto p = null;

//depois dessa linha vc instancia seu objeto
 while(result.next()){  
P = new produto();
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

ah ok, agora deu certo...desculpe minha ignorancia mas sou iniciante em java ainda....muito obrigado pela ajuda.
Responder

Gostei + 0

09/04/2009

Thiago Pedroso

[quote="tap_pedroso"]ah ok, agora deu certo...desculpe minha ignorancia mas sou iniciante em java ainda....muito obrigado pela ajuda.
Não quis te ofender cara eh q eu respondi rapido e nem percebi se fui mal educado, mas eh isso ai cara vc estah melhor q muitos aqui, pelo menos vc tenta fazer....
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar