JFXtras - 如何将更改侦听器添加到CalendarTextField?

时间:2013-06-11 07:56:30

标签: javafx jfxtras

如何在JFXtras中收听CalendarTextField中的更改?例如,选择器菜单中的新选择日期或输入日期?

    date.addEventFilter(MouseEvent.ANY, new EventHandler<Event>() {

        @Override
        public void handle(Event arg0) {
            System.out.println("EVENT");

        }
    });

为我提供了鼠标在场内的每一个动作。我没有找到另一个有意义的eventType。

我还考虑在窗口中添加此事件过滤器,并在窗口中的每次单击时检查所选日期。但这不是正确的方法。

2 个答案:

答案 0 :(得分:2)

好的,发现它here

    date.valueProperty().addListener(new ChangeListener<Calendar>() {
        @Override
        public void changed(
                ObservableValue<? extends Calendar> observableValue,
                Calendar oldValue, Calendar newValue) {
            System.out.println(oldValue + " -> " + newValue);
        }
    });

我没有意识到在FX中必须将侦听器设置为属性,而不是像Swing中那样设置组件。

答案 1 :(得分:0)

我使用FXML在control中重新设计了一个日历组件,对于我使用XCalendarPicker的选择器菜单,我向它添加了一个changelistener calendar()(谁是一个属性) 。当更改日期时,我使用新的Date

更新我的文本字段
final XCalendarPicker calendarPicker = new XCalendarPicker();

final ChangeListener<Calendar> calendarListener = new ChangeListener<Calendar>() {

            @Override
            public void changed(ObservableValue<? extends Calendar> observable, Calendar oldValue, Calendar newValue) {
                Date date = newValue.getTime();
                setDate(date);
            }
        };

        calendarPicker.calendar().addListener(calendarListener);