Boa tarde pessoal, procurei pelo fórum mas não encontrei uma situação parecida com a que eu tenho, é o seguinte, tenho um atributo campoData que é do tipo da classe “MinhaData”, estou com dificuldades em fazer com que no momento em que o usuário inserir uma data que seja maior que a data atual do sistema, o sistema emite uma mensagem informando que não é permitido datas futuras, ou seja, apenas data atual. Tentei fazer um método comparado com after, mas não consegui fazer funcionar, segue a classe MinhaData, se alguém tiver uma ideia eu agradeço, até mais!
package Componentes;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;
public class MinhaData extends MeuJFormattedTextField {
public GregorianCalendar data = new GregorianCalendar();
public MinhaData(String dica, boolean obrigatorio) {
super(dica, obrigatorio, 6);
try {
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(new Date()));
MaskFormatter mf = new MaskFormatter("##/##/####");
mf.setValidCharacters("[telefone removido]");
mf.install(this);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Não foi possível Data");
}
}
@Override
public boolean eValido() {
try {
if (getText().trim().length() != 10) {
return false;
}
SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy");
sf.setLenient(false);
Date data = sf.parse(getText());
return true;
} catch (Exception e) {
return false;
}
}
public boolean eVazio() {
if (getText().equals(" / / ")) {
return true;
} else {
return false;
}
}
public void setText(Date date) {
setText(new SimpleDateFormat("dd/MM/yyyy").format(data));
}
public Date getValor() {
try {
return (Date) new SimpleDateFormat("dd/MM/yyyy").parse(getText());
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Não foi possivel formatar a data.");
return null;
}
}
public void pegaData() {
setText(new SimpleDateFormat("dd/MM/yyyy").format(new Date()));
}