0

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.

0 Answers0