JXDatePicker:改变一年

时间:2013-11-21 14:41:26

标签: java swing swingx

使用JXDayPicker很难改变一年,因为用户必须单击12次才能实现此目的。因此,我遇到与Java Swing JXDatePicker相同的问题。

问题是我想坚持使用SwingX并且我需要一个只改变一个JXDatePicker的解决方案。

因此提出的解决方案:

UIManager.put(CalendarHeaderHandler.uiControllerID, SpinningCalendarHeaderHandler.class.getName());
datePicker = new JXDatePicker();
datePicker.getMonthView().setZoomable(true); //this is needed for custom header

对我不起作用。 我还看了一下Swinglabs Demo的MonthViewExtDemo类,但我还没弄清楚发生了什么。

最初我认为它会像以下一样简单:

    JXDatePicker picker = new JXDatePicker();
    JXMonthView monthView = picker.getMonthView();
    monthView.setZoomable(true);
    SpinningCalendarHeaderHandler handler = new SpinningCalendarHeaderHandler();
    handler.install(monthView);

但显然我错了。

更新 需求发生了一些变化,因此每个JXDatepicker都可以使用SpinningCalendarHeaderHandler,但不是必须的。因此,可以使用所提出的解决方案(上文)。 我在应用程序的开头使用以下内容:

UIManager.put(
    CalendarHeaderHandler.uiControllerID,
    "org.jdesktop.swingx.plaf.basic.SpinningCalendarHeaderHandler");
UIManager.put(
    SpinningCalendarHeaderHandler.ARROWS_SURROUND_MONTH,
    Boolean.TRUE);

稍后,对于应该使用SpinningCalendarHeaderHandler的特定datePicker,我使用:

datePicker.getMonthView().setZoomable(true);

目前这是有效的,因为还没有实现可缩放功能。但是,是的,我认为你可以称之为黑客。

0 个答案:

没有答案