国际化之前如何在JavaFX控件中检索文本标签

时间:2018-07-20 10:45:35

标签: java javafx internationalization javafx-8 fxml

我正在制作一个JavaFX应用程序,其中的内容是从JXML加载的。现在,我正在尝试动态更改组件的语言,而无需重新加载整个场景。我已经看到this answer创建了一个可观察的ResourceFactory,这正是我在寻找的东西,但是它依赖于具有可用控件的键来从资源包中查找国际化文本。

如何从使用FXMLLoader.load(...?从FXML文件加载的Button或Label中获取原始密钥?当我查看控件的属性时,我可以看到text属性我可以在屏幕上看到文本,但是我要用的是用于查找该文本的键-例如'%homepage.enterbuttonlabel'而不是'Enter'

我已经跟踪了FXMLLoader.load方法,并在FXMLLoader $ element:235

中找到了此方法。
public void processInstancePropertyAttributes() throws IOException {
    if (instancePropertyAttributes.size() > 0) {
        for (Attribute attribute : instancePropertyAttributes) {
            processPropertyAttribute(attribute);
        }
    }
}

在这一点上,instancePropertyAttributes包含元素“ text”,该元素具有我要使用的“%homepage.enterbuttonlabel”,但是似乎在处理该值时将其替换为国际化的文本。

FXMLLoader $ element是FXMLLoader的私有内部类,因此在处理擦除它之前,我看不到如何重写任何可以将值存储在新属性中的内容。缺少复制/重新实现FXMLLoader类,有什么办法可以访问该值?

0 个答案:

没有答案