Boa tarde.
Eu estou precisando criar um componente que tenha máscara de hora.
No início tinha utilizado o JSpinner, e em seu setEditor, coloquei hh:mm.
Ele funciona correto utilizando o giratório do próprio componente. Entretanto, ele permite a entrada de qualquer caractere por meio do teclado.
Então, mudei para o JFormattedTextField, pois ele aceita máscara de números. Contudo, quero que seja permitido a entrada de apenas horas válidas. Não sei como fazer isso utilizando classes do java. Alguém sabe?
O que fiz por enquanto foi:
mask = null;
try {
mask = new MaskFormatter("##:##");
setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(mask));
} catch (Exception e) {
}
this.setFormatter(mask);
Até cheguei a criar uma regex para validar hora, contudo a validação é feita depois que o usuário entra com a hora por completo e não a cada entrada de dígitos.
A outra opção seria chamar minha regex em cada entrada de dígito, porém se o cara digitou alguma coisa proibida eu teria que limpar aquele caractere.
Eu gostaria de saber: há alguma classe , método, qualquer coisa pronta que me auxilie nesta rotina, ou terei que fazer da forma que descrevi msm?
Obrigado.
Abraços.