Java 从工作日开始更改JFXDatePicker/DatePicker
我在JavaFX中使用JFXDatePicker(material design DatePicker),我想更改日历中单击日期选择器时弹出的一周的开始日期。目前,一周的开始日期是星期天(smtwfs),但我想把它改为星期一(mtwtfs) 这可能吗?我做了一个小调查,但没有成功Java 从工作日开始更改JFXDatePicker/DatePicker,java,javafx,datepicker,jfoenix,Java,Javafx,Datepicker,Jfoenix,我在JavaFX中使用JFXDatePicker(material design DatePicker),我想更改日历中单击日期选择器时弹出的一周的开始日期。目前,一周的开始日期是星期天(smtwfs),但我想把它改为星期一(mtwtfs) 这可能吗?我做了一个小调查,但没有成功 谢谢大家! 日期选择器不支持设置firstDayOfWeek。它(或者更好:它的近亲,使用DatePickerContent来表示日网格)从应用程序默认区域设置中获取该属性 要强制任何给定语言环境偏离默认的firstD
谢谢大家! 日期选择器不支持设置firstDayOfWeek。它(或者更好:它的近亲,使用DatePickerContent来表示日网格)从应用程序默认区域设置中获取该属性 要强制任何给定语言环境偏离默认的firstDayOfWeek,我们可以从默认语言环境构建一个新的语言环境,并通过扩展设置其新值:
public static Locale adjustWeekStart(Locale locale, DayOfWeek day) {
String dayString = day.toString().substring(0, 3);
Locale weekStart = new Locale.Builder()
.setLocale(locale)
.setExtension(Locale.UNICODE_LOCALE_EXTENSION, "fw-" + dayString)
.build();
return weekStart;
}
注意:键“fw”在WeekFields.of(Locale)中指定,日期名称的前三个字母的值取自CalendarDataUtility的实现(如果在某处指定,请编辑;)
现在,我们可以使用修改后的区域设置作为默认设置,并使用修改后的firstDayOfWeek获取日期选择器:
public class DatePickerExperiments extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Locale.setDefault(adjustWeekStart(Locale.getDefault(), DayOfWeek.SATURDAY));
DatePicker datePicker = new DatePicker();
Scene scene = new Scene(new HBox(datePicker), 300, 240);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
DatePicker不支持设置firstDayOfWeek。它(或者更好:它的近亲,使用DatePickerContent来表示日网格)从应用程序默认区域设置中获取该属性 要强制任何给定语言环境偏离默认的firstDayOfWeek,我们可以从默认语言环境构建一个新的语言环境,并通过扩展设置其新值:
public static Locale adjustWeekStart(Locale locale, DayOfWeek day) {
String dayString = day.toString().substring(0, 3);
Locale weekStart = new Locale.Builder()
.setLocale(locale)
.setExtension(Locale.UNICODE_LOCALE_EXTENSION, "fw-" + dayString)
.build();
return weekStart;
}
注意:键“fw”在WeekFields.of(Locale)中指定,日期名称的前三个字母的值取自CalendarDataUtility的实现(如果在某处指定,请编辑;)
现在,我们可以使用修改后的区域设置作为默认设置,并使用修改后的firstDayOfWeek获取日期选择器:
public class DatePickerExperiments extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Locale.setDefault(adjustWeekStart(Locale.getDefault(), DayOfWeek.SATURDAY));
DatePicker datePicker = new DatePicker();
Scene scene = new Scene(new HBox(datePicker), 300, 240);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
这就是您所要寻找的:或者这个:好吧,不支持只更改第一天的工作时间(至少在普通的日期选择器上不支持,我不知道JFXDatePicker,尽管我怀疑它不支持)-日期选择器的所有区域设置敏感状态都由默认区域设置控制(请参阅DatePickerContent了解如何完成)。您是否尝试在启动时更改jvm的区域设置?也许可以使用@kleopatra的解决方案解决此问题,但我仅通过添加这些jvm参数(对于我的国家,罗马尼亚):-Duser.country=RO-Duser.language=rowondering为什么这不是默认区域设置?这就是您要寻找的:或者这个:afaik,不支持仅更改firstDayOfWeek(至少在普通的DatePicker上不支持,我不知道JFXDatePicker,尽管我怀疑它不支持)-DatePicker的所有区域设置敏感状态都由默认区域设置控制(请参阅DatePickerContent了解如何操作)。您是否尝试在启动时更改jvm的区域设置?也许可以使用@kleopatra的解决方案解决此问题,但我仅通过添加这些jvm参数(对于我的国家罗马尼亚):-Duser.country=RO-Duser.language=rowondering为什么这不是默认区域设置?