MaskFormatter String

7 respostas
A
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

E
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.

A

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…

E

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!

A

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!!

E

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

A

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

vou fazer pela consola como sugeriste :slight_smile:

E

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