0

我如何将动作监听器添加到 jcalendar?我想在您单击一天时获取日期,因此我将在 jtextfield 上显示整个日期。我已经尝试过这样的事情,但是当我点击一天时它什么也没做。

    cal = new JCalendar();
    cal.setWeekOfYearVisible(false);
    cal.getDayChooser().getDayPanel().addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent e) {
            System.out.println(e.getPropertyName()
                    + ": " + (Date) e.getNewValue());

        }
    });

我也尝试了这个问题的答案的代码,这是相似的,但没有。 将 actionListener 添加到 jCalendar

4

1 回答 1

1

我认为您正在将属性更改侦听器添加到错误的 bean。我检查了 JCalendar 代码,getDayPanel() 方法只返回一个常规的 JPanel,我认为它不知道您感兴趣的“日”属性。

 /**
 * Returns the day panel.
 * 
 * @return the day panel
 */
public JPanel getDayPanel() {
    return dayPanel;
}

我认为您应该将属性更改侦听器添加到 daychooser 本身,这是了解“day”属性的类。此外,您可能希望注册日期选择器的“day”属性:

    cal = new JCalendar();
    cal.setWeekOfYearVisible(false);
    cal.getDayChooser().addPropertyChangeListener("day", new PropertyChangeListener() {

    @Override
    public void propertyChange(PropertyChangeEvent e) {
        System.out.println(e.getPropertyName()
                + ": " + e.getNewValue());

    }
});

不过,这只会给你用户选择的那一天,而不是整个日期。

于 2013-12-03T19:20:29.723 回答