JavaFX。如何改变JFXDatePicker中的地域性?

问题描述 投票:4回答:1

我想将JFXDatePicker的Locale改为我自己的自定义Locale,如Cyrillic,更准确地说,是Uzbek语言。我在谷歌上搜索了一下,但没有关于该怎么做的好提示。enter image description here

在这个DatePicker中,我想看到我自己的自定义字符串,而不是пн、мар19等。我怎么能把JFXDatePicker修改成自己的Locale?

java javafx locale jfoenix
1个回答
0
投票

迟到总比不回答好。

JFXDatePickerContent 是负责格式化所有单元格,日,月的类。JFXDatePicker. 有一个例子是: JFXDatePickerContent 里面 JFXDatePickerSkin:

JFXDatePicker > JFXDatePickerSkin > JFXDatePickerContent

JFXDatePickerContent 提供了这一方法。

protected Locale getLocale() {
    return Locale.getDefault();
}

虽然该方法的设计似乎是为了重写,以返回一个特定的。Locale,该类有一个包私有的构造函数。这里是返回该内容对象的方法,该方法来自 JFXDatePickerSkin:

@Override
protected Node getPopupContent() {
    if (content == null) {
        content = new JFXDatePickerContent(jfxDatePicker);
    }
    return content;
}

问题是: private JFXDatePickerContent content 对象的内部直接访问(不使用这个getter方法)。JFXDatePickerSkin 这意味着覆盖这个方法,返回另一个自定义的 JFXDatePickerContent (如果有可能的话)不会使一切工作都达到预期的效果。

简答。使用 Locale.setDefault(Locale newLocale); (如果你的应用程序中可以这样做的话)。

我不确定乌兹别克语是否支持西里尔字母,但应该这样做。

Locale uzCyrl = new Locale.Builder().setLanguage("uz").setScript("Cyrl").build();
Locale.setDefault(uzCyrl);

以下是设置西班牙西班牙语的语言环境后的输出。

Locale.setDefault(new Locale("es", "ES"));

sample output

© www.soinside.com 2019 - 2024. All rights reserved.