在JCalendar JDateChooser字段上检测日期更改是否可能?

9
我希望检测到在JDateChooser字段中更改日期时,以便我可以更新另一个字段。
这是否可行?如果是的话,我应该从哪里开始?我已经查看了文档,不幸的是没有添加ActionListener或StateChangeListener之类的方法(我的第一思路)。
2个回答

22

com.toedter.calendar.JCalendar 继承了 JComponentlistenerList,并且它实现了 java.beans.PropertyChangeListener。我建议添加监听器并查看发生了什么。

编辑:我认为你可以像 JCalendar 一样使用 addPropertyChangeListener()

JDateChooser chooser = new JDateChooser();
chooser.getDateEditor().addPropertyChangeListener(
    new PropertyChangeListener() {
        @Override
        public void propertyChange(PropertyChangeEvent e) {
            if ("date".equals(e.getPropertyName())) {
                System.out.println(e.getPropertyName()
                    + ": " + (Date) e.getNewValue());
            }
        }
    });
this.add(chooser);

1
+1 com.toedter.calendar.JDateChooser是一个很好的示例,展示了如何做到这一点。 - trashgod
@trashgod,对不起,我正在使用JDateChooser。我知道它有一个actionPerformed方法,但是我在Java中的事件处理方面有些生疏!我习惯于有一个addXListener方法来处理。我该如何将通用监听器钩子附加到该方法上? - ghickman
@ghickman:这个示例适用于当前版本1.3.3;看起来发布的API是1.2.1。 - trashgod
@trashgod: 你说得对!@Catalina Island: 谢谢你的例子,太完美了! - ghickman

1

看起来不错,但不幸的是我没有使用那个JCalendar(没想到可能有两个!)。我正在使用toedter.com的这个:http://www.toedter.com/en/jcalendar/api/index.html - ghickman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接