2016-06-08 157 views
0

我是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" 

這怎麼可能實現?

+3

一個總體思路:你可以實現一個['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)並定義一個常規屬性文件。 –

回答

2

是的,這是可以使用FXML文件中國際化字符串類似Android的資源的一種方式。也有一些區別:

  1. 資源文件是.properties文件,而不是.xml。這些變量在太多不同的方式定義:

    variable.name_1=Hello 
    variable.name_2=World 
    

    (注缺少<resource>標籤,它只是普通的[var_name]=[value])。

  2. 要引用FXML文件中的字符串,請使用%而不是@string/。例如:

    <Button 
        fx:id="button1" 
        text="%variable.name_1" 
    /> 
    

就是這樣。我建議尋找ResourceBundle,因爲這說明了屬性文件的命名方式爲被選擇了正確的語言。而且,該包也可用於將國際化變量添加到代碼中。