MaskFormatter String

7 respostas
Alkamavo
public MaskFormatter  senhaMask() {
		MaskFormatter mask = new MaskFormatter();
		try {
			
			mask.setMask("*");
			mask.setValidCharacters("0123456789abcdefghijklmnopqrstuvxwzABCDEFGHIJKLMNOPQRSTUVWXZ");
		
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
		return mask;
		
	}

pretendo usar este codigo para mascarar a senha que o Utilizador escrever na consola . do tipo

Scanner input= new Scanner( System.in);
String senha = input.nextLine(); // pretendo mascarar esta senha!!
alguma ajuda!!

7 Respostas

Eric_Yuzo
Usar MaskFormatter no console não sei se é possível. Mas a partir do java 6, pode usar a classe java.io.Console:
Console console = System.console(); // Retorna o console ou null, caso não esteja disponível
		if (console == null) {
			System.out.println("Console não está disponível.");
		} else {
			String nome = console.readLine("Nome: "); // Exibe o texto digitado normalmente
			char[] senha = console.readPassword("Senha: "); // Mascara o texto digitado

			System.out.println("Nome digitado: " + nome);
			System.out.println("Senha digitada: " + String.valueOf(senha));
		}
Acho que não dá pra especificar os caracteres permitidos ou o caractere que deve ser exibido como máscara, mas deve quebrar o galho.

PS.: Se System.console() retornar null, compile e rode direto no terminal. Testando este código no console do Eclipse estava retornando null.

Alkamavo

obrigado pela ajuda…estive a ler estes artigos

acho que correndo da consola do IDE nao da…retorna Null, com correndo mesmo da consola do sistema Operativo!!
mas para isso, faço um JTextFieldPassword, mas é meio lixado tar abrir swing so pra por a passWord…

https://bugs.eclipse.org/bugs/show_bug.cgi?id=122429
http://stackoverflow.com/questions/104254/java-io-console-support-in-eclipse-ide
http://www.eclipsezone.com/eclipse/forums/t93685.rhtml
http://netbeans.org/bugzilla/show_bug.cgi?id=68770

podem ajudar quem quiser usar a consola…

Eric_Yuzo

No console do meu SO funcionou normal. Mas como não é garantido é melhor não arriscar.

É meio complicado tentar fazer algo mais elaborado no console com java.

Feliz Ano Novo!

Alkamavo

tb no Console do meu S0 funcionou beleza, pena que na da pra maskacarar algo vindo da consola do IDE!!
mais uma vez grato pela ajuda!!
e espero que resolvem este bug!! ;p

feliz ano novo!!

Eric_Yuzo

Achei este artigo: http://java.sun.com/developer/technicalArticles/Security/pwordmask/

Alkamavo

eu li este artigo e maskara Um JTextField isso é swing …nao é o pretendido!!
:slight_smile:

vou fazer pela consola como sugeriste :slight_smile:

Eric_Yuzo

Então, no início do artigo ele mostra um exemplo com JPasswordField, que é do Swing.

Logo abaixo do exemplo com JPasswordField, tem o tópico “Command-Line Input Masking”. Leia daí para baixo. Ele cria uma thread que limpa os caracteres inseridos no System.in.

Não cheguei a testar, mas pelas figuras, está mascarando a senha digitada no console.

Criado 31 de dezembro de 2010
Ultima resposta 31 de dez. de 2010
Respostas 7
Participantes 2