Jframe chamando outro Jframe + passagem de parâmetros
7 respostas
_
_vinicios
Olá.
Alguem tem um exemplo de como faço para dois Jframe conseguirem interagir entre si.
Por exemplo, terei um Jframe principal, mas antes de abrir esse JframePrincipal eu preciso chamar outro JFrame que será aonde o usuário informará dados de conexão.
Então quando o usuário clicar em OK nesse JFrameAuxiliar(da conexão), terei que popular um objeto que está no JFramePrincipal, tem como fazer isso?
crie uma classe que se responsabilize pela passagem de valores com metodos getters e setters
quando o usuario clicar em ok passe os valores que desejar como parametros para o metodo setter
e no formulario principal para recuperar os valores use os getters
claro que isso e so um exmplo bem basico se vc roda nao ira funcionar pois nao tem um metodo main
mas e basicamente isso
_
_vinicios
Mas como que eu faço pra ter um mesmo objeto, no exemplo que você passou, são criados dois objetos distintos. Para o meu caso, eu precisaria que fosse criado somente um objeto Conexão na classe do JFramePrincipal e esse objeto fosse populado dentro do meu JFrameAuxiliar(o que irá ser chamado pelo JFramePrincipal) ?
ViniGodoy
Segue um exemplo:
E é melhor usar um JFrame e um JDialog. Assim vc não deixa o usuário voltar ao JFrame enquanto ele não fechar a janela da conexão.
jMarcel
ViniGodoy:
Segue um exemplo:
E é melhor usar um JFrame e um JDialog. Assim vc não deixa o usuário voltar ao JFrame [color=orange]enquanto ele não fechar a janela da conexão[/color].
Vide abaixo…
jMarcel
Já vi seu código de exemplo, mas não consegui adaptar para meu projeto, já que [color=orange]minha janela será fechada caso haja validação[/color]:
Informa-se o login e senha em um LoginDialog;
clica-se em um JButton e faz-se a validação no BD (via DAO);
se ok --> ‘LoginDialog.setVisible(false)’ e ‘MainDialog.setVisible(true)’;
quero que aquele ‘login’ informado no ‘LoginDialog’ ([color=orange]agora não mais visível[/color]) validado com sucesso apareça em um ‘JLabel’ do ‘MainDialog’.
ao contrário do dispose(), o setVisible() oculta o conteiner, mas os ‘dados’ do objeto ainda ficam na memória, é isso ?
coloquei o pegaLogin() no construtor do MainDialog, mas ao acessar o LoginDialog(), tem-se estouro da pilha (java.lang.StackOverflowError) relacionado ao BD.
depois tentei usá-lo no método de validação na classe LoginDialog ‘usrDAO.isValidUserAndPassword’ (vide abaixo), mas sem sucesso;
privatevoidbtLoginActionPerformed(java.awt.event.ActionEventevt){try{booleanvalid=usrDAO.isValidUserAndPassword(txtLogin.getText(),txtPassword.getText());if(!valid){JOptionPane.showMessageDialog(this,"Login e/ou senha incorreto(s) !","Login/Senha inválidos !",JOptionPane.ERROR_MESSAGE);return;}setVisible(false);g.setVisible(true);g.pegaLogin();// local análogo ao do seu exemplo, ou seja, dentro de um 'ActionPerformed()'System.out.print(txtLogin.getText());// é retornado apenas quando encerro o 'MainDialog'}catch(SQLExceptionex){Logger.getLogger(loginDialog.class.getName()).log(Level.SEVERE,null,ex);}}
por fim, coloquei o pegaLogin() em ‘loadInitialUsers()’ do MainDialog, mas não funcionou.
Tenho outras idéias, mas prefiro lhe perguntar: O que eu faço ??
obs.: nenhuma das classes (MainDialog / LoginDialog) possui o método main().
jMarcel
jMarcel:
Já vi seu código de exemplo, mas não consegui adaptar para meu projeto, já que [color=orange]minha janela será fechada caso haja validação[/color]:
Informa-se o login e senha em um LoginDialog;
clica-se em um JButton e faz-se a validação no BD (via DAO);
se ok --> ‘LoginDialog.setVisible(false)’ e ‘MainDialog.setVisible(true)’;
quero que aquele ‘login’ informado no ‘LoginDialog’ ([color=orange]agora não mais visível[/color]) validado com sucesso apareça em um ‘JLabel’ do ‘MainDialog’.
ao contrário do dispose(), o setVisible() oculta o conteiner, mas os ‘dados’ do objeto ainda ficam na memória, é isso ?
coloquei o pegaLogin() no construtor do MainDialog, mas ao acessar o LoginDialog(), tem-se estouro da pilha (java.lang.StackOverflowError) relacionado ao BD.
depois tentei usá-lo no método de validação na classe LoginDialog ‘usrDAO.isValidUserAndPassword’ (vide abaixo), mas sem sucesso;
privatevoidbtLoginActionPerformed(java.awt.event.ActionEventevt){try{booleanvalid=usrDAO.isValidUserAndPassword(txtLogin.getText(),txtPassword.getText());if(!valid){JOptionPane.showMessageDialog(this,"Login e/ou senha incorreto(s) !","Login/Senha inválidos !",JOptionPane.ERROR_MESSAGE);return;}setVisible(false);g.setVisible(true);g.pegaLogin();// local análogo ao do seu exemplo, ou seja, dentro de um 'ActionPerformed()'System.out.print(txtLogin.getText());// é retornado apenas quando encerro o 'MainDialog'}catch(SQLExceptionex){Logger.getLogger(loginDialog.class.getName()).log(Level.SEVERE,null,ex);}}
por fim, coloquei o pegaLogin() em ‘loadInitialUsers()’ do MainDialog, mas não funcionou.
Tenho outras idéias, mas prefiro lhe perguntar: O que eu faço ??
obs.: nenhuma das classes (MainDialog / LoginDialog) possui o método main().
crie uma classe que se responsabilize pela passagem de valores com metodos getters e setters
quando o usuario clicar em ok passe os valores que desejar como parametros para o metodo setter
e no formulario principal para recuperar os valores use os getters
ex: