Procurei aqui no fórum e encontrei:
Porém, não consegui (ainda) usar/adaptar para o meu caso.
Tenho no meu projeto o seguinte:
- 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]) - e que foi validado com sucesso - apareça em um ‘JLabel’ do ‘MainDialog’.
Criei o seguinte método no MainDialog:
protected void pegaLogin() {
loginDialog d = new loginDialog(null, true);
if (!(d.isShowing())) { // tentei usar outros métodos boolean aqui. teria que ser semelhante ao alterarDados() do exemplo citado ?
lblGetUser.setText((d.getNome())); // o método getNome está no LoginDialog (veja abaixo)
System.out.print("login informado: " + d.getNome()); // para verificar a saída/resultado
}
d.dispose(); // já usei setVisible(true/false), não resolve
}
Método no LoginDialog:
public String getNome() {
return (txtLogin.getText());
}
Dúvidas:
-
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;
private void btLoginActionPerformed(java.awt.event.ActionEvent evt) {
try {
boolean valid = 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 (SQLException ex) {
Logger.getLogger(loginDialog.class.getName()).log(Level.SEVERE, null, ex);
}
}
- por fim, coloquei o pegaLogin() em ‘loadInitialUsers()’ do MainDialog, mas não funcionou.
Alguém sabe ?