Jtable passar dados em outro frame

Ola,

Tenho uma classe que possui dados em um formulario. Quando o usuario clica no botao procurar nessa classe, o sistema abre outra tela (que é outra classe) para trazer os dados pesquisados pelo usuario. O que consegui ate agora foi, quando o usuario clica no botao procurar o sistema abre a tela de pesquisa, coloca os criterios da pesquisa e, conforme esses dados eles sao colocados em um Jtable. Ate ai tudo otimo. Mas agora gostaria que, quando o usuario desse dois cliques na linha dessa tabela ele passasse esses dados para outro frame (outra classe) e fechasse o frame de pesquisa. Ate pesquisando aqui no forum localizei essa linha de codigo:
jTable.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent e) {
if(e.getClickCount() == 2){
System.out.println(jTable.getValueAt(jTable.getSelectedRow(), 1));

				}

que serve para conseguir a linha e UMA coluna espeficica. Estou muito confusa. Preciso pegar essa linha e passar todas essas colunas dessa linha para outro frame que contem o formulario.

Obrigada.

Olá! Seja bem-vinda ao GUJ!
Quando tiver um tempinho, dá uma lida nesse tópico que te ensinará a forma correta de colocar código e alguns recursos do fórum.

Vamos ao seu problema…

Ao invés do getValueAt(), você pode usar o getSelectedRow(). Ele retorna qual linha da tabela está selecionada. Se você permite seleção em mais de uma linha, use getSelectedRows().

Geralmente, para o que você quer, é uma boa idéia ter seu próprio TableModel. Nele, você coloca um método getValue, que recebe um row e retorna o objeto inteiro que está sendo exibido naquela linha.

Desculpe com relacao a formatacao.
Certo, eu ate tenho o tableModel, vou tentar implementar isso, mas, tendo o objeto em “maos” meu problema eh setar os outros jtextfield do outro frame com o obejto retornado, entendeu ?.
Ex. : Consegui o obejto Contato da linha x. Entao esse objeto representa o formulario em outro frame e precisa preencher os jtextfields.

Obrigada.

Nesse caso, você terá que usar um JDialog modal. Assim, você pode fazer algo do gênero:

JDialog janelaDaTabela = new JanelaDaTabela();
janelaDaTabela.setModal(true);
janelaDaTabela.setVisible(true);
Contato contato = janelaDaTabela.getContatoSelecionado();
if (contato != null)
   preencheContato(contato);

Nesse “preencheContato”, você dá os devidos sets nos JTextFields.

deu certo :slight_smile: :smiley: :-o :lol: muito obrigada !!!

ola mari … sua duvida é bem semelhante a minha … c possivel gostaria que vc colocasse seu codigo que deu certo …para que eu possa ter um exemplo de como esse procedimento é feito … eu iniciando en java e gostaria de aprender a fazer esse precedimento

caso naum queria postar aqui …e prefira enviar no e-mail …segue o meu endereço…brp_@hotmail.com

agradeço desde ja

abraço

olá pessoal! minha duvida é a mesma, mas não entendi a solução…o meu codigo tah assim…
2º janela com a jtable

//essa é a Frame com a lista da jtable

if (evt.getClickCount() == 2) {//aqui identifica 2 clicks na tabela, pra ocorrer o evento....
            Object x = jTable1.getModel().getValueAt(jTable1.getSelectedRow(), 0);//pego o codigo do produto na posição 0 da tabela
            String codigo = (x.toString());
            System.out.println(codigo);//aki só testo pra ver se tah pegando
                                                                                               //, aqui passo o codigo 
            new CadastroProdutos(fabricaDeEntidades, gerenciador, codigo).setVisible(true);//chamo a outra janela e passo o codigo por parametro
            dispose();
        }

1º janela, principal

 /** Creates new form CadastroFilme */                                                  // ,aqui recebo o codigo da frame da jtable
    public CadastroProdutos(EntityManagerFactory f, EntityManager g, String codigo ) {
        fabricaDeEntidades = f;
        gerenciador        = g;//usando o hibernate
        
        
        
        
        initComponents();
        System.out.println(codigo);//aqui testo se ele veio, e está chegando....
        

        
        jTextFieldCod.setText(""+codigo);// aqui tento fazer ele aparecer no meu campo do codigo...e não aparece de jeito nehum....
        
      }

Parece estar tudo certo, até já tinha feito funcionar, mas agora não funciona.
ps: quanto estava funcionando: Outro problema é quando eu clico 2 vezes na jtable pra passar o valor, ao inves de trazer pra mesma janela, ela abre outra tela de cadastro, aí fica 2 abertas, a que chamou e a que abriu. E isso não pode acontecer em uma tela de venda por exemplo…Agradeço desde já!

Comece não usando o DefaultTableModel.

Depois, sempre que vc dá um new na classe da janela, você está criando uma nova janela. Se você quer que os dados mudem na mesma janela, simplesmente chame o setText dos componentes e mude seus valores.

Valeu Godoy!!!
Eu já tinha conseguido passar os parametros ontem mesmo, nada resiste a insistência!
Mas valeu pela ajuda com a tela, agora ela envia para a mesma.

Não é que é simples assim?? faz uns 6 meses q venho tentando fazer issso, nem meu prof. da facul sabe…
Programar é uma arte!

Valeus!

[quote=nathanRayden]Valeu Godoy!!!
Eu já tinha conseguido passar os parametros ontem mesmo, nada resiste a insistência!
Mas valeu pela ajuda com a tela, agora ela envia para a mesma.

Não é que é simples assim?? faz uns 6 meses q venho tentando fazer issso, nem meu prof. da facul sabe…
Programar é uma arte!
[/quote]

Então agora só falta se livrar do DefaultTableModel e aprender a usar o JTable de verdade. :slight_smile: