Problema com MaskFormatter

2 respostas
cleiton_herrmann

Olá pessoal...

Eu sei que ja tem um tópico falando sobre esse assunto aqui, porém já tem bastante tempo que não é acessado e as notificações via e-mail estão desabilitadas, e eu tbem nao encontrei solução para o meu problema no google, entao resolvi colocar minha duvida em um novo tópico.

o cara desse tópico [url]http://www.guj.com.br/posts/list/10666.java[/url], postou a solução, porém não foi o suficiente para que eu pudesse entender o que ele fez.

o problema é se o usuario digitar uma data em um JFormattedTextField devidamente formatado usando MaskFormatter com a mascara ##/##/####, e depois desistir de cadastrar uma data e for apagá-la com delete ou backspace, quando o campo perde o focus ele volta a ficar com a ultima data digitada, ou seja, o ultimo value que foi atribuido ao componente... o que eu quero é que ele aceite nada como uma data valida, ou seja, __/__/____, quero q este valor possa ser setado na propriedade value do componente, a solução postada no outro topico é reescrever o método
public Object stringToValue(String value)
da classe MaskFormatter, porém quando faço isso, no meu código, o netbeans acusa que nao consegue achar o método
private Object stringToValue(String value, bollean completeMatch)
Eu tenho em minha classe um método para setar a mascara do componente q é o seguinte...
public MaskFormatter setMascara(String mascara) {
    MaskFormatter mask = null;
    try {
        mask = new MaskFormatter(mascara);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return mask;
}
para reescrever o método stringToValue(String value), fiz a seguinte alteração na linha que esta entre o bloco try catch, onde eu instancio o objeto MaskFormatter que será setado no meu JFormattedTextField.
mask = new MaskFormatter(mascara) {
                
    public Object stringToValue(String value) throws ParseException {
        return stringToValue(value, true);
     }
                
};
feito isso, o netbeans não encontra o outro método stringToValue, o com 2 parametros, tentei fazer assim na linha do return.
return mask.stringToValue(value, true)
mas dai o netbeans diz q a variavel mask é acessada de uma inner class e deve ser declarada como final, mas se eu fizer isso, eu nao posso associar um valor a ela. tentei também
return MaskFormatter.stringToValue(value, true)
porém esse método tem acesso privado, entao nao posso acessa-lo.

Já tentei de td que sabia, tentei usar o COMMIT, COMMIT OR REVERT, REVERT, enfim, já tem mais de um mês que to tentando corrigir isso e nao consegui !!

eu queria um exemplo de código que funcionasse, se nao for pedir muito,
mas uma explicação de uma solução já seria ótimo !!!!

Desde já, agradecido !!!

2 Respostas

A

cara eu to com este problema tbm…heheh
vc conseguiu resolver?

thiagocg

Caras, sei q é meio antigo esse post, mas o meu problema é recente e é exatamente o mesmo que o de vcs.

Alguem conseguiu uma solução pra isto?

[]'s

Criado 4 de julho de 2007
Ultima resposta 5 de out. de 2010
Respostas 2
Participantes 3