Senha no JOptionPane ?[RESOLVIDO]

7 respostas
dicabeca

pessoal e uma duvida boba,tem alguma forma de colocar o campo q aparece no

JOptionPane.showInputDialog()
, como senha alguem sabe c isso é o possivel???

7 Respostas

alineea

Aê flamenguista :slight_smile:
Tudo bom?

A classe que você precisa não é a JTextField, e sim a JPasswordField:

JPasswordField password = new JPasswordField();
password.setEchoChar('*'); // mostra '*' em vez do texto de entrada; vc pode escolher outro caracter se quiser

Experimenta aí, se era essa a sua dúvida :slight_smile:
Abraços**

Marky.Vasconcelos

PS: Ele quer isso dentro do JOptionPane

No fórum eu já vi essa pergunta mas não lembro aonde, se você procurar acho que você encontra.

dicabeca

opa tudo bom,se liga eu sei q ele monta o panel com o JTextField,eu queria saber c tem como colocar o JPassword em vez do JTextField,eu ate consegui colocar mais fica bizarro,passando o JPassword como parametro ,apareceu 2 campos textos um com a o JPassword e outro em baixo com JTextField

alineea

Ops... Desculpa, erro de interpretação :)
Mas vc pode fazer o seguinte : uma sugestão é vc, em vez de usar o JOptionPane.inputDialog(), usar o JOptionPane.showMessageDiaog e passar o JPassword como parâmetro. Aí, em vez do showMessageDialog mostrar uma mensagem, ele mostra o JPassword para o usuário digitar a senha.
Aí vai um exemplo:

import javax.swing.*;

public class Exemplo {

	/**
	*	Main.
	*/
	public static void main(String args[]){
		new Exemplo();
	}

	/**
	 *	Construtor. Usado para exemplificar um modo de pedir senhas ao usuario através das classes JOptionPane
	 *	e JPasswordField.
	 */
	Exemplo(){

		// Cria campo onde o usuario entra com a senha
		JPasswordField password = new JPasswordField(10);
		password.setEchoChar('*'); 
	
		// Cria um rótulo para o campo
		JLabel rotulo = new JLabel("Entre com a senha:");
				
		// Coloca o rótulo e a caixa de entrada numa JPanel:
		JPanel entUsuario = new JPanel();
		entUsuario.add(rotulo);
		entUsuario.add(password);
	
		// Mostra o rótulo e a caixa de entrada de password para o usuario fornecer a senha:
		JOptionPane.showMessageDialog(null, entUsuario, "Acesso restrito", JOptionPane.PLAIN_MESSAGE);

		// O programa só prossegue quando o usuário clicar o botao de OK do showMessageDialog. 
		// Aí, é só pegar a senha:

		// Captura a senha:
		String senha = password.getText();

		// mostra a senha no terminal:
		System.out.println("Você digitou: "+senha+"\nFim de execucao.");
	}
}

Se vc rodar este código, ele funciona, mas o JPassword.getText() é deprecated :)
Outro abraço :)

Marky.Vasconcelos

O método getText está deprecriado no JPasswordField

Use getPassword que te retorna um char[]

dicabeca

vlw alineea,Mark_Ameba vlw pela forca ai obrigadao!!!

R

Essa é a mesma dúvida que eu tenho e estou tentando aplicar, só que os tipos não se falam entre si por isso fica dificil por um JPassword no argumento do JOptionPane pois ele deve ser String e mesmo usando o getPassword() tb ainda não consegui, alguem pode ajudar.

Rzanebr

Criado 25 de outubro de 2007
Ultima resposta 18 de nov. de 2009
Respostas 7
Participantes 4