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
:-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. 