EventFilter を持つ CalendarPicker があります。EventFilter では、CalendarPicker.getDisplayedCalendar() を使用して displayedCalendar が必要ですが、間違った日付を取得します。CalendarPicker が表示されたカレンダーを更新する前の最後の日付です。
私の EventFilter は、CalendarPicker の標準イベントの前に実行されるようです。
また、イベントは CalendarPicker によって消費されるため、EventHandler を使用できません。
例:
- CalendarPicker に 2015 年 3 月が表示されます。
- 月を 2015 年 4 月に変更します
- 私の CalendarPiker.addEventFilter() で、CalendarPicker.getDisplayedCalendar() "2015-03-01" を取得します
- CalendarPicker は 2015 年 4 月を表示し
ます EventFilter の前に標準イベントを実行するにはどうすればよいですか?
ここにいくつかのコードがあります:
calendarpicker.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if (event.getButton().equals(MouseButton.PRIMARY)) {
Calendar cal = calendarpicker.getCalendar();
if (cal != null) {
selectedDate = cal.getTime();
log.debug(String.format("(selectedDate): %s" , selectedDate));
log.debug(String.format("(displayed): %s" , calendarpicker.getDisplayedCalendar().getTime()));
}
}
}
});
calendarpicker で日付を選択すると、すべて問題ありません
selectedDate は選択された日付で、表示されるカレンダーは表示された月の 1 日です。
スピナーを使用して月または年を変更すると、selectedDate は変更されません (1 つの日付を選択していないため、これは正しいと思います) が、表示される日付は、月を変更した前の月の 1 番目の日付です (たとえば、4 月から 3 月に変更 => 01.03.2015 ではなく 01.04.2015)。