I'm trying to change the theme using FlatLaf (2.0.1) on a JDateChooser (JCalendar 1.4) object. I don't know why the day buttons don't refresh.
Here is my code:
public class Test extends JFrame {
private JPanel contentPane;
private JDateChooser dateChooser;
private JToggleButton bChangeTheme;
public static void main(String[] args) {
FlatArcDarkOrangeIJTheme.setup();
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test frame = new Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Test() {
setFont(new Font("Verdana", Font.PLAIN, 12));
setTitle("Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 95);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new MigLayout("", "[][grow]", "[grow]"));
bChangeTheme = new JToggleButton("Change theme");
bChangeTheme.setFont(new Font("Verdana", Font.PLAIN, 12));
bChangeTheme.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if(bChangeTheme.isSelected()) {
FlatArcOrangeIJTheme.setup();
FlatLaf.updateUI();
dateChooser.setFont(FlatUIUtils.nonUIResource(new Font("Verdana", Font.PLAIN, 12)));
} else {
FlatArcDarkOrangeIJTheme.setup();
FlatLaf.updateUI();
dateChooser.setFont(FlatUIUtils.nonUIResource(new Font("Verdana", Font.PLAIN, 12)));
}
}
});
contentPane.add(bChangeTheme, "cell 0 0,growy");
dateChooser = new JDateChooser();
dateChooser.setDateFormatString("yyyy-MM-dd");
dateChooser.setFont(new Font("Verdana", Font.PLAIN, 12));
dateChooser.getCalendarButton().setFont(new Font("Verdana", Font.PLAIN, 12));
dateChooser.getJCalendar().getDayChooser().setDecorationBackgroundVisible(false);
dateChooser.getJCalendar().getDayChooser().setSundayForeground(Color.decode("#f57900"));
dateChooser.getJCalendar().getDayChooser().setWeekdayForeground(Color.decode("#f57900"));
dateChooser.getJCalendar().getYearChooser().setFont(dateChooser.getFont());
dateChooser.getJCalendar().getDayChooser().setForeground(dateChooser.getJCalendar().getMonthChooser().getForeground());
dateChooser.getJCalendar().setFont(dateChooser.getFont());
contentPane.add(dateChooser, "cell 1 0,grow");
}
}
I've been trying to get to the buttons like this:
dcDo.getJCalendar().getDayChooser().getDayPanel().getComponents();
Failed to change the background of the buttons in a loop.
I also tried to find a similar trick to the one used to set the font.
dateChooser.setFont(FlatUIUtils.nonUIResource(new Font("Verdana", Font.PLAIN, 12)));
But no success...
I will be grateful for all suggestions.