JavaFX颜色选择器语言

JavaFX颜色选择器语言,java,javafx,color-picker,Java,Javafx,Color Picker,是否有办法更改颜色选择器的文本语言,如“自定义颜色…”、“当前颜色”、“新颜色”、“色调”、“饱和度”、“亮度”、“不透明度”、“保存”、“使用”、“取消” 最简单的方法是使用一个预定义的区域设置,例如,在创建ColorPicker之前添加下一行: Locale.setDefault(Locale.FRENCH); 您将看到下一个UI: 编辑:下面的答案是为那些需要更多异国语言的人准备的。如果你使用其中的一种:de,es,fr,it,ja,ko,pt,sv,zh@sergey grinev提供

是否有办法更改
颜色选择器的文本语言,如“自定义颜色…”、“当前颜色”、“新颜色”、“色调”、“饱和度”、“亮度”、“不透明度”、“保存”、“使用”、“取消”


最简单的方法是使用一个预定义的区域设置,例如,在创建ColorPicker之前添加下一行:

Locale.setDefault(Locale.FRENCH);
您将看到下一个UI:


编辑:下面的答案是为那些需要更多异国语言的人准备的。如果你使用其中的一种:
de,es,fr,it,ja,ko,pt,sv,zh
@sergey grinev提供了足够的答案


我想出了两个解决办法。两者都依赖于
属性
文件。您可以根据JRE提供的
jxfrt.jar
中的
com/sun/javafx/scene/control/skin/resources/
中的示例创建自己的示例

所有示例都将使用非内置的波兰语言环境(
新语言环境(“pl”、“pl”)


解决方案1 创建具有以下结构的JAR文件(相应地更改后缀)

然后把它放在

<path_to_JVM>/lib/ext
创建两个类-
ResourceBundle.Control
ResourceBundleControlProvider
(),如下所示

public class CustomLocaleFxResourceBundleControl extends ResourceBundle.Control {
    static final String FX_BASE_NAME = "com/sun/javafx/scene/control/skin/resources/controls";
    private static final Locale MY_LOCALE = new Locale("pl", "PL");

    @Override
    public String toBundleName(String baseName, Locale locale) {
        if (FX_BASE_NAME.equals(baseName) && MY_LOCALE.equals(locale))
            return "path/to/my/resources/polish"; // without extension

        return super.toBundleName(baseName, locale);
    }
}
编译这些类并将它们与您的资源和
META-INF
文件夹一起放入JAR文件中
META-INF
文件夹应具有以下结构

META-INF/services/java.util.spi.ResourceBundleControlProvider
java.util.spi.ResourceBundleControlProvider
是一个文本文件,其中只有一行是指向
ResourceBundleControlProvider
类的路径。在我们的情况下,它只是

CustomLocaleFxResourceBundleControlProvider
把整个罐子放进去

<path_to_JVM>/lib/ext
/lib/ext

它适用于法语。但如果我需要为其他语言(如俄语或爱沙尼亚语)创建颜色选择器,该怎么办?试图使用'Locale dLocale=new Locale(“ru”);Locale.setDefault(dLocale);`,但它不起作用。@user3629015 lol,俄语和爱沙尼亚语是我除了英语以外的两种语言:)看看这个例子中的3ph3r答案。Пччччззааааааааааааа1072?(@sinedsemЯззззззззззззззззззззззззззззз并且找不到您上面提到的属性文件。在
/jre/lib/ext
中有
jfxrt.jar
。复制它,将扩展名更改为
zip
,解压缩并查看我回答中提到的目录。谢谢,我检索了所需的属性文件并对其进行了更改。我创建了CustomLocalEFXResourceBundleControl提供r和CustomLocaleFxResourceBundleControl在bin\com\my文件夹(mainApp所在的位置)中,也放在了控件\u pl.properties文件中。但我对“编译这些类并将它们与资源和META-INF文件夹一起放在JAR文件中感到困惑。META-INF文件夹应该具有以下结构”。我只是不知道该怎么做。我对Java的理解是begginer级别的,还不能完全理解。如果我没有弄错的话,Eclipse正在动态编译程序。我应该手动编译这两个类吗?我不知道应该将这些类放在哪个jar中。在同一个jar中,我从中获取属性文件?如果我看Java FX DDK,t我使用的是org.eclipse.fx.ide.css.jfx8_1.0.0.jar,其中只有maven文件夹的META-INF。我应该创建META-INF/services/java.util.spi.ResourceBundleControlProvider吗?您可以手动准备所需的目录结构()。进入
toJar
文件夹,选择全部,右键单击,添加到ZIP存档(取决于您安装的软件)。之后,将result
.zip
的扩展名更改为
.jar
。您可以从eclipse项目中的
bin
目录中选择
.class
文件。在您的情况下,首先将它们移动到默认包-jar中声明的包和路径必须相同。对于其他语言上的标准系统窗口的翻译,是s此处的ome信息:
META-INF/services/java.util.spi.ResourceBundleControlProvider
CustomLocaleFxResourceBundleControlProvider
<path_to_JVM>/lib/ext