2014-10-07 1 views
1

Я использую JCalendar и настроил прослушиватель, используя PropertyChangeListener. Моя проблема заключается в том, что этот слушатель не будет реагировать на событие в текущий день, я предполагаю, что никаких изменений в свойстве нет. Я хочу, чтобы он смог ответить на выбор сегодняшней даты, поскольку календарь ведет к дневнику. Когда я открылся, я все равно хочу, чтобы календарь открывался на «сегодняшнюю» дату, но чтобы слушатель ответил на нажатие «сегодняшней» даты. Мой код для слушателя ниже:JCalendar и PropertyChangeListener: событие не уволено за текущий день

final JCalendar calendar = new JCalendar(); 

calendar.getDayChooser().addPropertyChangeListener("day", new PropertyChangeListener() { 
    @Override 
    public void propertyChange(PropertyChangeEvent e) { 

     if(Calendar.AddJob!=1){ 
      JOptionPane.showMessageDialog(null,"No Entry Found"); 
      frame.dispose(); 
      String date = EditDate(calendar.getDate().toString()); 
      WorkDiary.WorkDiaryGui(date); 
     } 

     if(Calendar.AddJob==1){ 
      String date = EditDate(calendar.getDate().toString()); 
      Calendar.AddJob=0; 
      frame.dispose(); 
      WorkDiaryAddJob.WorkDiaryAddJobGui(CalReg, date); 
     } 
    } 
}); 

ответ

1

Моя проблема заключается в том, что Тхи s слушатель не будет реагировать на событие в текущий день, я предполагаю, потому что никаких изменений в свойстве нет.

Ваше предположение верно: день Chooser не срабатывает изменения дня собственности, если нажать на кнопку для очень выбранного дня (т.е. сегодня). И это имеет смысл, потому что свойство на самом деле не меняется.

Я хочу, чтобы у него была возможность ответить на выбор сегодняшней даты, поскольку календарь ведет к дневнику.

Чтобы изменить вышеупомянутое поведение мы можем использовать setAlwaysFireDayProperty(boolean alwaysFire) метод, чтобы заставить день Chooser всегда срабатывает событие изменения свойства:

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

Примечание: Это также объясняется в this answer.