我正在创建一个JavaFX应用程序,其中内容从JXML加载 . 我现在正处于试图动态更改组件语言而不重新加载整个场景的地步 . 我见过this answer创建了一个可观察的ResourceFactory,这正是我正在寻找的,但它依赖于控件的密钥可用于从资源包中查找国际化文本 .

如何使用FXMLLoader.load(...?当我看到控件的属性时,可以看到一个按钮或标签从FXML文件中加载原始键,我可以看到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类是否有任何方法可以访问该值?