Ajuda com jTable e seus componentes!

Eai galera tou com um problema que é o seguinte:
Tenho uma classe de Vendas que possui uma jTable (nomeada de tabelaLocal) que possui 3 colunas sendo elas Código, Serviço e Valor e que quando o formulário de vendas é chamado ela é populada de acordo com o número de objetos que eu recuperei da minha base de dados. Porém quando vou executar uma venda, preciso de vincular um cliente e para listar os clientes cadastrados criei um botão que vai chamar o método listarClientes() para sobreescrever esta tabela local com uma tabela de clientes para listar os mesmos. Então criei a classe criaTabela para criar a tabela cliente, popular a mesma e devolver a tabela já populada para sobreescrever a minha tabelaLocal, segundo o código abaixo (somente os métodos que interessam):

Na classe Vendas

public void listarClientes() { tabelaLocal = criarTabela.montaTabela(); }

Na classe CriaTabela:

[code] public JTable montaTabela(){

        DefaultTableModel modelo = new DefaultTableModel();
        modelo.setNumRows(0);
        String [] colunas = new String[]{"Código", "Nome", "Telefone", "Endereço", "Número", "Bairro"};
        modelo.addColumn(colunas);
        ClienteBO boCliente = new ClienteBO();
        List<Cliente> clientes = boCliente.buscaTodos();
         try {
             Iterator<Cliente> i = clientes.iterator();
             Cliente c;
             while (i.hasNext()) {
                 c = i.next();
                 modelo.addRow(new Object[] {c.getId(), c.getNome(), c.getTelefone(), c.getEndereco(), c.getNumero(), c.getBairro()});
             }
         } catch (Exception e) {
             e.printStackTrace();
             msg.avisos("Erro ao listar os clientes na tabela");
           }
        JTable novaTabela = new JTable(modelo);
        return novaTabela;

}
[/code]

O problema que tenho é que quando eu faço o uso do botão (a ActionPerformed já está definida e fazendo a chamada correta do método listarClientes() ), ele faz a chamada da minha classe de criar a tabela e ela é retornada porém a minha tabelaLocal não é sobreescrita! O que fazer?

[quote=Gabriel Garcia]Eai galera tou com um problema que é o seguinte:
Tenho uma classe de Vendas que possui uma jTable (nomeada de tabelaLocal) que possui 3 colunas sendo elas Código, Serviço e Valor e que quando o formulário de vendas é chamado ela é populada de acordo com o número de objetos que eu recuperei da minha base de dados. Porém quando vou executar uma venda, preciso de vincular um cliente e para listar os clientes cadastrados criei um botão que vai chamar o método listarClientes() para sobreescrever esta tabela local com uma tabela de clientes para listar os mesmos. Então criei a classe criaTabela para criar a tabela cliente, popular a mesma e devolver a tabela já populada para sobreescrever a minha tabelaLocal, segundo o código abaixo (somente os métodos que interessam):

Na classe Vendas

public void listarClientes() { tabelaLocal = criarTabela.montaTabela(); }

Na classe CriaTabela:

[code] public JTable montaTabela(){

        DefaultTableModel modelo = new DefaultTableModel();
        modelo.setNumRows(0);
        String [] colunas = new String[]{"Código", "Nome", "Telefone", "Endereço", "Número", "Bairro"};
        modelo.addColumn(colunas);
        ClienteBO boCliente = new ClienteBO();
        List<Cliente> clientes = boCliente.buscaTodos();
         try {
             Iterator<Cliente> i = clientes.iterator();
             Cliente c;
             while (i.hasNext()) {
                 c = i.next();
                 modelo.addRow(new Object[] {c.getId(), c.getNome(), c.getTelefone(), c.getEndereco(), c.getNumero(), c.getBairro()});
             }
         } catch (Exception e) {
             e.printStackTrace();
             msg.avisos("Erro ao listar os clientes na tabela");
           }
        JTable novaTabela = new JTable(modelo);
        return novaTabela;

}
[/code]

O problema que tenho é que quando eu faço o uso do botão (a ActionPerformed já está definida e fazendo a chamada correta do método listarClientes() ), ele faz a chamada da minha classe de criar a tabela e ela é retornada porém a minha tabelaLocal não é sobreescrita! O que fazer?
[/quote]

Cara, antes de vc sair usando o JTable recomendo fortemente a leitura sobre ele:
http://download.oracle.com/javase/tutorial/uiswing/components/table.html

Domine bem a implementação de um TableModel e 80% dos seus prblemas serão resolvidos… leia este link:
http://www.guj.com.br/posts/list/15/199067.java#1001295

Abraços

Conheço pouco sobre jTable até pq o foco da facudade não é aplicativo desktop! Então tudo que eu tenho descoberto sobre aplicativos desktop foi por conta propria, pesquisando e futricando nas opções do netbeans e dentro dos limites de tempo que tenho!
Vlw ai pela ajuda, vou implementar uma TableModel aqui e se eu tiver alguma duvida eu volto a perguntar neste tópico!

Oi,

Acredito que seria mais simples retornar o modelo e não uma JTable.

Sendo assim, você instância novamente a JTable passando o modelo. Após isso utilize o método repaint para refrescar a sua nova tabela.

Tchauzin!

Para ver mais exemplos de como implementar um TableModel, siga os links da minha assinatura.

Opa! só passando pra agradecer mesmo hehe, fiz o meu modelo aqui agora ta funcionando blz!
Muito boa as dicas vlw mesmo!
:smiley:
abraços

[quote=lina]
…utilize o método repaint para refrescar a sua nova tabela.
Tchauzin![/quote]

Engraçado como o portugues da um sentido estranho para coisas tão triviais.