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 http://www.guj.com.br/posts/list/10666.java, 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.
[code]mask = new MaskFormatter(mascara) {
public Object stringToValue(String value) throws ParseException {
return stringToValue(value, true);
}
};[/code]
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 !!!