Olá, comunidade!
Alguém sabe me dizer como faço para criar uma máscara de data em um JFormattedTextField? Eu preciso de uma máscara q conforme o usuário vai digitando a data a barra ‘/’ já aparece automaticamente. Consegui colocar as barras usando MaskFormatter, mas dessa forma ele permite a entrada de uma data inválida como 30 de fevereiro por ex. Tentei usar o ex. abaixo:
DateFormat format = new SimpleDateFormat(“dd/MM/yy”);
DateFormatter df = new DateFormatter(format);
ftf1.setValue(new Date());
No entanto, o ex. acima retorna a data atual do sistema e eu queria q o usuário digitasse a data e fosse feita a validação para saber se data é correta assim q perdesse o fco por exemplo…
Se você quiser aproveitar a classe abaixo para fazer as comparações de dígitos, como no exemplo abaixo. Fique avontade.
E assim validar os campos.
public class Compare
{
// declaração de variaveis
private Character charact;
private int inteiro;
public void setNum( int inter ) { }
public boolean getNum() { return true; }
public boolean digito(char ch)
{
if ( charact.isDigit(ch) )
return true;
else
return false;
}
public boolean letra(char ch)
{
if ( charact.isLetter(ch) )
return true;
else
return false;
}
public static boolean validaData(String data){
//impõe formato de data aceito como entrada
SimpleDateFormat val = new SimpleDateFormat("dd/MM/yyyy");
val.setLenient(false);
try {
val.parse(data);
} catch (ParseException e) {
//caso o formato seja invalido
JOptionPane.showMessageDialog(null,"Você entrou uma data invalida,
por favor tente novamente!","ERRO!",JOptionPane.ERROR_MESSAGE);
return false;
}
return true;
}