Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从工作日开始更改JFXDatePicker/DatePicker_Java_Javafx_Datepicker_Jfoenix - Fatal编程技术网

Java 从工作日开始更改JFXDatePicker/DatePicker

Java 从工作日开始更改JFXDatePicker/DatePicker,java,javafx,datepicker,jfoenix,Java,Javafx,Datepicker,Jfoenix,我在JavaFX中使用JFXDatePicker(material design DatePicker),我想更改日历中单击日期选择器时弹出的一周的开始日期。目前,一周的开始日期是星期天(smtwfs),但我想把它改为星期一(mtwtfs) 这可能吗?我做了一个小调查,但没有成功 谢谢大家! 日期选择器不支持设置firstDayOfWeek。它(或者更好:它的近亲,使用DatePickerContent来表示日网格)从应用程序默认区域设置中获取该属性 要强制任何给定语言环境偏离默认的firstD

我在JavaFX中使用JFXDatePicker(material design DatePicker),我想更改日历中单击日期选择器时弹出的一周的开始日期。目前,一周的开始日期是星期天(smtwfs),但我想把它改为星期一(mtwtfs)

这可能吗?我做了一个小调查,但没有成功


谢谢大家!

日期选择器不支持设置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为什么这不是默认区域设置?