[dúvida] getText para campo de senha

Quando um código aparece riscado, é porque existe outro melhor que ele pra aquela função correto ??

Eu usava o .show() até “descobrir” o setVisible();

porém, em campos de senha, ele risca o getText(), qual é o outro código pra pegar o que está num campo de senha ?

Exatamente. Quando o método está riscado em sua IDE, significa que ele está depreciado. Se você abrir a classe e verificar sua declaração perceberá a anotação @Deprecated.

O método para pegar o texto de JPasswordField é o getPassword:

String senha = String.valueOf(passwordField.getPassword());

Dica: Quando um método está depreciado, é comum que no javadoc tenha uma indicação de qual método utilizar em seu lugar.

[EDIT]: Corrigida a conversão para String como sugerido por PedroTOliveira

Só um detalhe o getPasswor() retorna um char[].

Dai ficaria assim:

String senha = String.valueOf(passwordField.getPassword());

Pode crer. Isso que dá postar as coisas sem testar antes. hehe :XD:

Valeu, já arrumei lá em cima.

Rs escrevi aqui sem ler o que estava em cima … deu certo esse jeito “de baixo” :wink:

Obrigado ambos ai

Faça a conversão para string como proposto pelo amigo PedroTOliveira:

if (String.valueOf(senha.getPassword()).equals("")) { JOPtionPane..."Insira senha; }

Ou seja, você teria de fazer isto aqui:

if ("".equals(.String.valueOf(senha.getPassword()))) 

Isso é porque quando o compilador vê que você tem um equals, mas o lado direito é uma constante e o esquerdo pode ser null, ele sugere que você inverta a ordem, para evitar NullPointerException.

Está certo…

"".equals(field); é nullsafer pelo próprio contrato do método equals!

sugiro vc usar algo parecido com isso…

if (field == null || field.trim().isEmpty()) { //alguma coisa }

hmm…

Vivendo e aprendendo. Essa questão de nullsafe é novidade pra mim.

Valeu

Mas em termos de segurança, esse nullsafer é melhor que o code[/code] ??

Seria mais para evitar o NullPointerException. Faça este teste:

String s = null; System.out.println(s.equals(""));
Irá lançar um NullPointerException.
Depois faça este teste:

String s = null; System.out.println("".equals(s));
Irá imprimir false.

tsalsicha, esse não será o primeiro e nem o último método riscado que você irá recair ao usar o Java. Sempre, nesses casos, o ideal é consultar o javadoc:

No javadoc do método getText() está escrito isso aqui:

http://www.guj.com.br/posts/reply/0/217852.java

Veja que ele mesmo já diz para usar getPassword. Outro exemplo, no javadoc do JFrame, o método show diz isso aqui:

http://download.oracle.com/javase/1.4.2/docs/api/java/awt/Component.html#show()

É sempre preferível recorrer ao javadoc, do que ficar postando no fórum. Só se ele te ajudar, aí sim, venha postar a dúvida aqui. Digo isso pq geralmente é muito mais rápído.

Só comentando do teste NullSafe. Eu acho ele muito pouco útil.

Geralmente “” e nulo são sinônimos. E esse método: “”.equals(null) retorna false e não true.

Sem falar, que quando não são sinônimos, geralmente o null representa um erro de programação. Esse teste mascara o erro e, talvez, seria melhor receber a NullPointerException e ir até a raiz do problema.