gpt4 book ai didi

javafx - 更改 JavaFX 8 DatePicker 中的语言

转载 作者:行者123 更新时间:2023-12-04 23:20:49 25 4
gpt4 key购买 nike

将 DatePicker 添加到我的应用程序时,我得到以下信息:

DatePicker

我认为这是因为我在计算机上使用希伯来语。
如何将 DatePicker 的语言更改为英语?

最佳答案

您可以为 Java 虚拟机调用的实例定义默认语言环境:

Locale.setDefault(Locale.ENGLISH);

或者如果你找不到locale,你需要,在预制的常量中,你可以在 officially supported locales的列表中查找国家代码。并像这样创建您的“自定义”语言环境:
Locale.setDefault(Locale("cs")) //locale for Czech language

start方法。如果您还想为文本编辑器实现自定义格式化程序,您也应该向格式化程序添加语言环境。

这只是一个例子:
private final DateTimeFormatter formatter = 
DateTimeFormatter.ofPattern("EEEE, d.MM.uuuu", Locale.ENGLISH);

@Override
public void start(Stage primaryStage) {
Locale.setDefault(Locale.ENGLISH);

DatePicker datePicker=new DatePicker();
datePicker.setValue(LocalDate.now());
datePicker.setConverter(new StringConverter<LocalDate>() {

@Override
public String toString(LocalDate object) {
return object.format(formatter);
}

@Override
public LocalDate fromString(String string) {
return LocalDate.parse(string, formatter);
}
});
StackPane root = new StackPane(datePicker);
Scene scene = new Scene(root, 400, 400);

primaryStage.setScene(scene);
primaryStage.show();
}

编辑

通过设计, DatePicker用途 Locale.getDefault()在应用于弹出窗口中显示的控件的所有格式中。这可以在 com.sun.javafx.scene.control.skin.DatePickerContent 中检查类(class)。

除非您为更改这些格式化程序的控件提供自定义外观,否则为了更改 DatePicker内容为英语,避免其他本地化控件的进一步更改,解决方法可能是:
private final Locale myLocale = Locale.getDefault(Locale.Category.FORMAT);

@Override
public void start(Stage primaryStage) {
DatePicker datePicker=new DatePicker();
datePicker.setValue(LocalDate.now());
datePicker.setOnShowing(e-> Locale.setDefault(Locale.Category.FORMAT,Locale.ENGLISH));
datePicker.setOnShown(e-> Locale.setDefault(Locale.Category.FORMAT,myLocale));
...
}

编辑 2

setOnShown 上返回到原始语言环境为时过早,因为如果用户更改月份,则会使用原始语言环境并且无法正确显示。要工作,它应该在 setOnHiding 上关闭。并在 setOnAction .
private final Locale myLocale = Locale.getDefault(Locale.Category.FORMAT);

@Override
public void start(Stage primaryStage) {
DatePicker datePicker=new DatePicker();
datePicker.setValue(LocalDate.now());
datePicker.setOnShowing(e-> Locale.setDefault(Locale.Category.FORMAT,Locale.ENGLISH));
datePicker.setOnHiding(e-> Locale.setDefault(Locale.Category.FORMAT,myLocale));
datePicker.setOnAction(e-> Locale.setDefault(Locale.Category.FORMAT,myLocale));
...
}

关于javafx - 更改 JavaFX 8 DatePicker 中的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27383203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com