Pessoal,
Na minha aplicação tenho um JTextField onde o usuário deverá digitar um valor no formato de moeda corrente (R$ X.XXX,XX).
Para isto construí um validador que recebe uma String e tenta convertê-la para double. Se falhar, eu considero o número como inválido, se passar eu considero o número válido.
O problema é que se o usuário digita R$ 1.000,00, funciona, se ele digitar R$ 1a1a1a.00a ele também aceita! O que é bem estranho!!!
O código do validador:
class VerificadorCampoMoeda extends InputVerifier {
public boolean verify(JComponent input) {
JTextField tf = (JTextField) input;
NumberFormat formatador;
String valor = tf.getText(); // pega o valor digitado pelo usuário
Double valorAux = Double.parseDouble("0");
try {
formatador = NumberFormat.getNumberInstance();
valorAux = (formatador.parse(valor)).doubleValue();
return true;
} catch (ParseException e) {
// Se deu erro como número normal, tenta como currency...
try {
formatador = NumberFormat.getCurrencyInstance();
valorAux = (formatador.parse(valor)).doubleValue();
return true;
} catch (ParseException e2) {
// Se deu erro como número normal, tenta como currency...
mostraErro("O número informado " + valor + " não está em um formato válido");
return false;
}
}
}
}
Alguém tem uma alternativa que funcione?
[]'s