Salve galera.
Estou tentando criar uma classe de configuracao para meus JCalendar, quero fazer isso pq preciso mudar algumas configurações como por exemplo quando o usuario digita uma data válida ela fica em verde e quando esta errada fica em vermelha.
Tentei estender essa classe para JDateChooser mas tbm ainda naum consegui fazer.
estou tentando assim.
public class JCalendarMasks{
/**
* Classe de Configuração dos JDateChooser;
*/
private MaskFormatter mascara;
private JDateChooser jDateChooser;
public JCalendarMasks(JDateChooser component){
this.jDateChooser = component;
try {
this.mascara = new MaskFormatter("##/##/####");
this.mascara.setPlaceholderCharacter('_');
jDateChooser.setIcon(new ImageIcon("/home/fernando/calendar.png"));
final JFormattedTextField formatDate = (JFormattedTextField)jDateChooser.getDateEditor().getUiComponent();
formatDate.setFormatterFactory(new DefaultFormatterFactory(mascara));
formatDate.setHorizontalAlignment(SwingConstants.CENTER);
formatDate.setForeground(Color.BLACK);
formatDate.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
formatDate.selectAll(); //nao respeita
}
@Override
public void focusLost(FocusEvent e) {
formatDate.setForeground(Color.BLUE); //nao respeita
}
});
} catch (ParseException ex) {
JOptionPane.showMessageDialog(null, ex.getLocalizedMessage(),"JCalendarMask Error",JOptionPane.ERROR_MESSAGE);
}
}
}
//aqui como uso.
public class FinanConsultaTitulos extends javax.swing.JDialog {
public FinanConsultaTitulos(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
new JCalendarMasks(vencimentoInicial); //invoca a classe passando o componente JDateChooser q esta no JDialog
}
}
Funciona perfeitamente, problema é só esse q disse: Quero customizá-lo para que apenas quando a data for errada mantenha em vermelho e se for verdadeira mantenha em preto e tbm para retornar se a data é valida ou não, pelo visto se encontrar como q a classe trata isso de ficar verde ou vermelho fica facil, mas por enqto ainda não encontrei como fazer.
Dei uma lida nos docs mas msm assim ainda não consegui fazer.
Como fazer isso ?
obrigado.