如何在JFXtras中收听CalendarTextField中的更改?例如,选择器菜单中的新选择日期或输入日期?
date.addEventFilter(MouseEvent.ANY, new EventHandler<Event>() {
@Override
public void handle(Event arg0) {
System.out.println("EVENT");
}
});
为我提供了鼠标在场内的每一个动作。我没有找到另一个有意义的eventType。
我还考虑在窗口中添加此事件过滤器,并在窗口中的每次单击时检查所选日期。但这不是正确的方法。
答案 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);