Search code examples
javaswingjcalendar

How to set "off" all the toogle day buttons in jCalendar?


I'm using the toedter's jCalendar and triggering events when the day buttons are clicked using the following code:

  JDayChooser jdc = jCalendar.getDayChooser();
  jdc.addPropertyChangeListener("day", new PropertyChangeListener() {
       @Override
       public void propertyChange(PropertyChangeEvent e) {
           date = jCalendar.getDate();
           new AgendaFrame(date, user).setVisible(true);  
       } 
  }); 

The thing is that when jCalendar initiates, the button which matches the current date is already pressed and so, I'm unable to press it to go to my agenda frame. Any ideas to solve this?


Solution

  • The thing is that when jCalendar initiates, the button which matches the current date is already pressed and so, I'm unable to press it to go to my agenda frame. Any ideas to solve this?

    To solve this problem you have to use setAlwaysFireDayProperty(boolean alwaysFire) method to set this property true:

    JCalendar calendar = new JCalendar();        
    JDayChooser dayChooser = calendar.getDayChooser();
    dayChooser.setAlwaysFireDayProperty(true); // here is the key
    dayChooser.addPropertyChangeListener("day", ...);
    

    This way if you press some button (for instance, today) the property event will be fired regardless the button was already pressed.

    public void setAlwaysFireDayProperty(boolean alwaysFire)
    

    this is needed for JDateChooser.

    Parameters:

    alwaysFire - true, if day property shall be fired every time a day is chosen.