Comparando String com JPasswordField

Estou desenvolvendo um software usando Swing.

Tenho um campo do tipo JPasswordField do qual preciso pegar o valor digitado pelo usuário e compará-lo com uma String que leio do meu banco de dados.

Tudo funciona bem quando uso a função getText da Seguinte maneira:

private JPasswordField textSenha = null;

String senha = textSenha.getText();

if (usu.getSenusu().equals(senha)) {
	System.out.Println("digitou a senha correta")
}

Porém a função getText está deprecated. O site da Sun indica que deve-se usar a função getPassword.

Tentei usar a função getPassword, mas ao usar:

String senha = textSenha.getPassword().toString();

percebi que a função getPassword me retornava uma String com a senha, porém esta estava criptogravada (ou ilegível, não sei)

Alguém sabe como faço para comparar o conteúdo de um campo do tipo JPasswordfield, pego usando getPassword, com uma String?

É só tirar o .toString()

Ou seja:

String senha = textSenha.getPassword();

PS: Só não me pergunte por quê. Se alguém souber explicar…


Reformulando:

O método getPassword() retorna um array de char. Por isso não funciona.
Faça um string com o array de char e compare, ou então compare arrays de char.

Deve ter uma maneira mais fácil de fazer isso, mas, por enquanto, esse método pode ajudar:

public boolean verifyPassword(String validPassword) {
	// onde passwordText e uma instancia de JPasswordField
	char[] pass = passwordText.getPassword();

	// verifica o tamanho da senha
	if (pass.length != validPassword.length()) {
		return false; // se for diferente, retorna falso

	} else {
		for (int i = 0; i < pass.length; i++) {

			// verifica cada char em pass
			if (pass[i] != validPassword.charAt(i)) {
				return false; // se for diferente, retorna falso
			}
		}
	}

	return true; // senao, retorna verdadeiro
}

[edit]
Realmente tem: String pass = new String(passwordText.getPassword()); :oops:
[/edit]

Valeu pela ajuda, pessoal…

Tomás, retirar o .toString(); não bastou não saca só:

Bastava eu dar um new ao atribuir o valor para a String. Assim:

String senha = new String(textSenha.getPassword());

Daí tudo funcionou. Encotrei a solução no fórun da Sun, em:


http://forum.java.sun.com/thread.jspa?forumID=256&threadID=272498

Lá o cara diz que só assim a gente coloca o valor lido na String sem aquela criptografia louca…

Valeu mesmo pessoal!