Matheus,
o que eu fiz é o seguinte:
criei uma classe Senha
public class Senha extends JDialog
{
..
}
é uma classezinha simples, que contém apenas um JPasswordField e 2 botões (ok e cancel).
essa Dialog é incluída no meu programa, quando desejo mudar do modo Usuário para o modo administrador.
então no construtor de Senha, eu passava um boolean como parâmetro, desejando que a variável fosse modificada, pra no meu programa eu saber se a autenticação tinha sido bem sucedida.
eu fazia a chamada assim, no programa principal:
Senha dlg = new Senha (retorno, senha);
onde retorno é uma variável boolean do meu programa principal;
essa chamada, chama o contrutor
public Senha (final boolean &retorno, final String senha)
{
...
if (pswd.getText().equals(senha))
retorno = true;
else
retorno = false;
}
no entanto, essa passagem por referência não estava funcionando, já que Java só trabalha com passagem por valor.
No meu comentário acima, eu explico uma tentativa que fiz, de utilizar tratamento de exceções, ao invés desse código q coloco aqui, mas também não consegui, já que a exceção que é lançada dentro do construtor de Senha não está sendo pego pelos blocos catch.
Alguma sugestão??