如何从fxml文件中的xml文件读取值?
问题描述:
我是JavaFX的新手,并且作为在Android Studio中完成的类似方式,我想要一个名为strings.xml的文件,我可以在其中存储一些可以从fxml文件中读取的资源。例如,如果我在的strings.xml有以下代码:如何从fxml文件中的xml文件读取值?
<resources>
<string name="app_name">My App Name</string>
</resources>
我愿做这样的事情在FXML文件:
text="@string/app_name"
这怎么可能实现?
答
是的,这是可以使用FXML文件中国际化字符串类似Android的资源的一种方式。也有一些区别:
-
资源文件是
.properties
文件,而不是.xml
。这些变量在太多不同的方式定义:variable.name_1=Hello variable.name_2=World
(注缺少
<resource>
标签,它只是普通的[var_name]=[value]
)。 -
要引用FXML文件中的字符串,请使用
%
而不是@string/
。例如:<Button fx:id="button1" text="%variable.name_1" />
就是这样。我建议寻找ResourceBundle
,因为这说明了属性文件的命名方式为被选择了正确的语言。而且,该包也可用于将国际化变量添加到代码中。
一个总体思路:你可以实现一个['ResourceBundle'(http://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html)读取和解析XML文件,然后将一个实例传递给'FXMLLoader'。然后使用标准FXML [资源解析](http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#resource_resolution)。或者,如果您不使用XML,只需使用标准['PropertyResourceBundle'](http://docs.oracle.com/javase/8/docs/api/java/util/PropertyResourceBundle.html)并定义一个常规属性文件。 –