2016-06-08 8 views
0

Ich bin Neuling auf JavaFX, und als ähnliche Art und Weise, in Android Studio gemacht wird, würde Ich mag eine Datei strings.xml genannt habe, wo ich einige Ressourcen speichern kann, die von einer fxml Datei gelesen werden können. Zum Beispiel, wenn ich den folgenden Code in strings.xml habe:Wie kann ich Werte aus einer XML-Datei in einer fxml-Datei lesen?

<resources> 
    <string name="app_name">My App Name</string> 
</resources> 

würde Ich mag so etwas wie dies in der fxml Datei tun: zu erreichen

text="@string/app_name" 

Wie es möglich ist, dass ?

+3

Eine allgemeine Idee: Sie könnten eine ['ResourceBundle'] (http://docs.oracle.com/javase/8/docs/api/java/util/ResourceBundle.html) implementieren, die Ihre XML-Datei liest und analysiert und dann eine Instanz an den 'FXMLLoader' übergeben. Verwenden Sie dann die Standard-FXML [Ressourcenauflösung] (http://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#resource_resolution). Wenn Sie nicht an die Verwendung von XML gebunden sind, verwenden Sie alternativ einen Standard ['PropertyResourceBundle'] (http://docs.oracle.com/javase/8/docs/api/java/util/PropertyResourceBundle.html) und definieren Sie eine Normale Eigenschaftendatei –

Antwort

2

Ja, es ist möglich, internationalisierte Strings in FXML-Dateien ähnlich wie bei Android zu verwenden. Es gibt einige Unterschiede:

  1. Die Ressource-Dateien sind .properties Dateien statt .xml. Die Variablen in einer anderen Art und Weise zu definiert sind:

    variable.name_1=Hello 
    variable.name_2=World 
    

    (Hinweis fehlt <resource> Tags, es ist einfach nur [var_name]=[value]).

  2. Um auf eine Zeichenfolge in einer FXML-Datei zu verweisen, verwenden Sie eine % anstelle einer @string/. Zum Beispiel:

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

Das ist es. Ich empfehle, nach ResourceBundle zu suchen, da dies erklärt, wie die Eigenschaftendateien für die richtige Sprache benannt werden sollen. Dieses Paket kann auch dazu verwendet werden, Ihrem Code internationalisierte Variablen hinzuzufügen.