Amigo boa noite!!
Veja bem, fiz exatamente como voce disse e ai me deparei com outro ou outros problemas, vejamos:
1 - antes para abrir o form2(clientesBuscaGeral) e o form3(produtosBuscaGeral) bastava eu apertar a tecla TAB, usei o FocusLost. Estando no form2 ou no form3 uma tabela contendo todos os registros de clientes ou produtos, bastava eu clicar no registro desejado e os dados daquele registro em específico ja preencheriam os campos no form1 (vendas).
2 - Aparentemente o problema estava no FocusLost, que cria uma funçao anonima dentro do Listener, e isso impedia que uma classe pudesse acessar a outra. Em razão disso resolvi fazer a chamada dos forms atraves KeyCode da tecla pressionada. O resultado foi que mesmo não havendo mais erro no projeto, não consigo mais abrir as telas de busca geral. Estando no campo txtNome ou no txtDescricao do form1 e apertandoa o enter, a barra de espaço ou qualquer outra conforme o KeyCode, nada acontece, o formulário não abre. O outro problema é que, deixando a chamada no OnKeyPress até abre, porem, ao clicar na tabela, nada acontece, os dados não são transferidos para os campos do formulario de vendas.
para entender melhor as modificações que fiz conforme a sua orientação, logo abaixo tem o meu código:
No form Vendas:
Evento KeyPressed do campo CodProduto
digite ou cole o código aqui
if (evt.getKeyCode() == KeyEvent.VK_0) {
frmProdutosBuscaGeral telaPr = new frmProdutosBuscaGeral();
telaPr.setVisible(true);
}
Evento KeyPressed do campo txtNome
if (evt.getKeyCode() == KeyEvent.VK_SPACE) {
frmClientesBuscaGeral telaC = new frmClientesBuscaGeral(this.txtNome);
telaC.setVisible(true);
}
No formulario ClientesBuscaGeral:
private JTextField txtNome;
private JFormattedTextField formatTxtCPF;
private JFormattedTextField FomattedtxtField;
public frmClientesBuscaGeral(JTextField txtField) {
txtNome = txtField;
formatTxtCPF = FomattedtxtField;
}
public void listar(){
ClientesDAO dao = new ClientesDAO();
List<Clientes> lista = dao.listarClientes();
DefaultTableModel dados = (DefaultTableModel)tabelaClientes.getModel();
dados.setNumRows(0);
for(Clientes c : lista){
dados.addRow(new Object[]{
c.getId(),
c.getNome(),
c.getEmail(),
c.getCelular(),
c.getTelefone(),
c.getCep(),
c.getEndereco(),
c.getNumero(),
c.getBairro(),
c.getCidade(),
c.getComplemento(),
c.getEstado(),
c.getRg(),
c.getCpf(),
});
No clique do mouse sobre um dos campos da tabela.
txtNome.setText(tabelaClientes.getValueAt(tabelaClientes.getSelectedRow(),1).toString());
formatTxtCPF.setText(tabelaClientes.getValueAt(tabelaClientes.getSelectedRow(),13).toString());
// tela.setVisible(true);
setVisible(false);
No formulario ProdutosBuscaGeral,
private JTextField txtCodProduto, txtDescricao, txtPreco_Unitario;
public frmProdutosBuscaGeral(JTextField txtField) {
txtDescricao = txtField;
txtCodProduto = txtField;
txtPreco_Unitario = txtField;
}
public void listar() {
ProdutosDAO dao = new ProdutosDAO();
List<Produtos> lista = dao.listarProdutos();
DefaultTableModel dados = (DefaultTableModel) tabelaProdutos.getModel();
dados.setNumRows(0);
for (Produtos c : lista) {
dados.addRow(new Object[]{
c.getId(),
c.getDescricao(),
c.getPreco(),
c.getQtd_estoque(),
c.getFornecedor().getNome()
});
}
}
e Agora no clique do mouse sobre um dos campos da tabela.
//Passo 2 Pegando os dados do cliente clicado e preenchendo os campos da aba Dados Pessoais ( jTabbedPane1)
txtCodProduto.setText(tabelaProdutos.getValueAt(tabelaProdutos.getSelectedRow(), 0).toString());
txtDescricao.setText(tabelaProdutos.getValueAt(tabelaProdutos.getSelectedRow(), 1).toString());
txtPreco_Unitario.setText(tabelaProdutos.getValueAt(tabelaProdutos.getSelectedRow(), 2).toString());
//frmVendas.setVisible(true);
dispose();
Eu fiz conforme voce orientou, nenhum dos eventos que antes estava acontecendo agora funciona
O que tem de errado ai ?
Obrigado