jfxtras - EventFilter中的CalendarPicker getDisplayedCalendar错误

时间:2015-04-01 15:01:50

标签: events javafx jfxtras

我有一个带有EventFilter的CalendarPicker。在EventFilter中,我想使用CalendarPicker.getDisplayedCalendar()显示insertedCalendar,但是我的日期错误。它是CalendarPicker更新displayedCalendar之前的最后一个日期。
似乎我的EventFilter在CalendarPicker的标准事件之前执行。
我不能使用EventHandler,因为CalendarPicker使用了该事件。 />例如:
- 我在CalendarPicker中看到2015年3月。
- 将月份更改为2015年4月
- 在我的CalendarPiker.addEventFilter()中,我使用CalendarPicker.getDisplayedCalendar()&# 34; 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中选择一个日期,那么一切都是o.k.
selectedDate是选定日期,显示的日历是显示月份的第1天 如果我使用微调器更改月份或年份,则selectedDate不会更改(我认为这是正确的,因为我没有选择一个日期),但显示的日期是我更改月份之前的月份的第1个日期(例如,从4月改为3月=&gt; 01.04.2015而不是01.03.2015)。

1 个答案:

答案 0 :(得分:0)

我明白你想要什么。但是,事件按某种顺序触发,并且没有规则要求应该采用什么样的顺序。在这种情况下,没有任何要求必须在任何属性更改后触发鼠标单击事件。

你不是在听错事吗?如果你要在displayedCalendarProperty()上注册一个监听器,你会在显示的日期发生变化时被告知,无论是什么触发它(鼠标单击,键盘导航-ListSpinner支持 - 或者以编程方式)。