【问题标题】:JCalendar and PropertyChangeListener: event is not fired for current dayJCalendar 和 PropertyChangeListener:当天未触发事件
【发布时间】:2014-10-27 23:27:57
【问题描述】:

我正在使用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);
        }
    }
});

【问题讨论】:

    标签: java swing jcalendar jdatechooser


    【解决方案1】:

    我的问题是这个监听器不会响应当天的事件,我假设是因为属性没有变化。

    您的假设是正确的:如果您按下所选日期(即今天)的按钮,日期选择器不会触发日期属性更改。这是有道理的,因为属性实际上并没有改变。

    我希望它能够响应选择今天的日期,因为日历会指向日记。

    要修改上述行为,我们可以使用setAlwaysFireDayProperty(boolean alwaysFire) 方法强制日期选择器始终触发属性更改事件:

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

    注意:this answer 中也对此进行了说明。

    【讨论】:

    • 你很棒。这就是我试图找到的
    【解决方案2】:

    我认为您必须添加一个 ActionListener 而不是 PropertyChangeListener...

    http://max-server.myftp.org/jcalendar/ibuild/dist/doc/api/com/toedter/calendar/JDayChooser.html#actionPerformed%28java.awt.event.ActionEvent%29:

    它说:“JDayChooser 是全天按钮的 ActionListener”(在 ActionListener 上)

     calendar.getDayChooser().addActionListener(new ActionListener(){
         ...
     };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多