Tenho um JFormattedTextField com a seguinte mascara:
JFormattedTextField dateText = new JFormattedTextField(new SimpleDateFormat(“dd/MM/yyyy”));
try {
MaskFormatter dateFormat = new MaskFormatter("##/##/####");
dateFormat.setValidCharacters(“0123456789”);
dateFormat.install(dateText);
} catch (Exception e) {
e.printStackTrace();
}
dateText.updateUI();
O campo está formatado certinho quando digito. Até limita a quantidade dos caracteres.
Porém após digitar e sair do campo, se eu voltar pra digitar outra data, a formatação não funciona.
O campo deixa digitar letras, não limita a quantidade, etc…
Como resolvo isso???
O problema é que você está atacando por dois lados… Você seta o format com SimpleDateFormat e depois quer utilizar uma máscara no campo. Como você falou, da primeira vez funciona, mas quando você sai do campo ele reinstala os formatadores e neste momento ele não espera dois e acaba não funcionando direito…
No meu caso eu estava utilizando um Formatter para numero e queria colocar um filtro para não deixar o cara entrar letras. A solução foi herdar o formatter (no seu caso o MaskFormatter), sobrescrever o método install() e settar o SimpleDateFormat neste método.
Era o que eu estava tentando fazer.
Criei a classe herdando MaskFormatter porém estou com dificuldades em implementar o SimpleDateFormat.
Estou vasculhando a net pra tentar achar como fazer. Poderia me dar um exemplo, mesmo que seja com o Formatter como vc já mencionou?
Muito obrigado