使用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);
目前这是有效的,因为还没有实现可缩放功能。但是,是的,我认为你可以称之为黑客。