Pessoal, seguinte:
Possuo este frame, onde ao clicar no botão ‘BUSCAR PRODUTO’ abre outro frame com a listagem dos produtos cadastrados:
Neste frame possui uma tabela de produtos. Ao dar um duplo click em uma linha, recupero o id do produto da linha clicada e retorno este id para o frame anterior. segue o código:

No método de retorno do ID, eu utilizo o dado retorno e busco no banco de dados o produto equivalente.
Pego as informações deste produto e tento setar em uma TextField.

o problema é que não seta. Consigo imprimir o valor no System out normalmente, como teste.
mas o valor não é setado no campo de texto dentro deste método.
Ja vi um artigo parecido: [Resolvido] Não seta valor no JtextField
mas não consegui resolver meu problema.
Alguém tem alguma dica?
Tem certeza de que não está criando outra instância da tela anterior?
Posta o código completo das duas telas.
staroski, estou usando o Swing, portanto é gerado aquele monte de código por traz.
É meu primeiro post, portanto, não sei se fica legal postar aquele mundo de codigo aqui, mas filtrei
o que estou utilizando, veja se da pra entender:
Na tela de listagem eu crio uma instancia do frame anterior para acessar o método retornaID.
------- Tela ‘principal’ ------------
public class GeracaoOcamento extends javax.swing.JFrame {
/**
* Creates new form GeracaoOcamento
*/
public GeracaoOcamento() {
initComponents();
setLocationRelativeTo(null);
}
public void retornaID(ListaProdutos frameProdutos, int idSelecionado) {
ProdutoDAO pd = new ProdutoDAO();
Produto produto = pd.buscarPorId(Produto.class, idSelecionado);
txtNomeProduto.setText(produto.getNome());
System.out.println(produto.getNome());
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
new ListaProdutos().setVisible(true);
}
}
— TELA DE LISTAGEM DE PRODUTOS-----
public class ListaProdutos extends javax.swing.JFrame {
/**
* Creates new form ListaClientes
*/
public ProdutoTableModel tableModel;
ProdutoDAO produtodao = new ProdutoDAO();
GeracaoOcamento geracaoOrcamento = new GeracaoOcamento();
public ListaProdutos() {
initComponents();
setLocationRelativeTo(null);
tableModel = new ProdutoTableModel(produtodao.consultarTodos());
tableLista.setModel(tableModel);
}
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
CadastroProduto cp = new CadastroProduto();
//DeskPane.add(cp);
cp.setVisible(true);
this.setVisible(false);
}
private void tableListaMouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount() == 2) {
int linha = tableLista.getSelectedRow();
int idSelecionado = (int) tableModel.getValueAt(linha, 0);
geracaoOrcamento.retornaID(this, idSelecionado);
this.setVisible(false);
}
}
Muda o this.setVisible(false) para this.dispose(); e faz um teste.
Para retornar valores nunca usei um JFrame sempre uso o JDialog, tenta mudar sua tela de busca para JDialog e pegar a variável idSelecionado
JDialog jd = new JDialog(this, true);
Ai no JFrame que recebe o retorno você coloca
int id = jd.idSelecionado;
O idSelecionado tem que ser public no JDialog
1 curtida
É que na classe GeracaoOcamento você cria um novo objeto do tipo ListaProdutos.
E na classe ListaProdutos você cria um novo objeto do tipo GeracaoOcamento, não pode, tem que usar o mesmo objeto GeracaoOcamento que abriu o ListaProdutos.
1 curtida
Galera, muito obrigado a ajuda de vc.
Segui as orientações de vcs. Transformei minha tela de busca em um JDialog, como deve ser e busquei o valor da variavel como o Rodrigo_de_Freitas sugeriu.
Muitíssimo obrigado pela atenção de vcs!
1 curtida