JavaFX颜色选择器的语言

时间:2015-04-13 18:34:38

标签: java javafx color-picker

有没有办法改变ColorPicker的文字语言,例如"自定义颜色......","当前颜色",&# 34;新颜色"," Hue","饱和度","亮度","不透明度","保存&# 34;,"使用","取消"?

enter image description here

2 个答案:

答案 0 :(得分:4)

编辑:以下答案适用于那些需要更多异国情调语言的人。如果你使用其中一个:de, es, fr, it, ja, ko, pt, sv, zh @ sergey-grinev提供了足够的答案。


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

所有示例都将使用非内置的波兰区域设置(new Locale("pl", "PL"))。


解决方案1 ​​

使用以下结构创建JAR文件(相应地更改后缀)

com/sun/javafx/scene/control/skin/resources/controls_pl_PL.properties

并将其放入

<path_to_JVM>/lib/ext

那就是它。

我不确定许可证在com.sun.*包中放置自定义文件的含义,所以这是另一种解决方案。

解决方案2

像上面一样创建properties文件,但您可以将其命名为任意位置并将其放置在您想要的任何位置。让我们说它将是

path/to/my/resources/polish.properties

像这样创建两个类 - ResourceBundle.ControlResourceBundleControlProviderread more)。

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);
    }
}
public class CustomLocaleFxResourceBundleControlProvider implements ResourceBundleControlProvider {
    private static final ResourceBundle.Control MY_RESOURCE_BUNDLE_CONTROL = new CustomLocaleFxResourceBundleControl();

    public ResourceBundle.Control getControl(String baseName) {
        if (CustomLocaleFxResourceBundleControl.FX_BASE_NAME.equals(baseName))
            return MY_RESOURCE_BUNDLE_CONTROL;

        return null;
    }
}

编译这些类并将它们与资源和META-INF文件夹一起放在JAR文件中。 META-INF文件夹应具有以下结构

META-INF/services/java.util.spi.ResourceBundleControlProvider

java.util.spi.ResourceBundleControlProvider是一个文本文件,只有行是ResourceBundleControlProvider类的路径。就我们而言,它只是

CustomLocaleFxResourceBundleControlProvider

完成JAR放入

<path_to_JVM>/lib/ext

答案 1 :(得分:3)

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

Locale.setDefault(Locale.FRENCH);

你会看到下一个UI:

french color picker