2016-05-23 13 views
0

複数のResourceBundleファイルをロードするには複数のfxmlファイルがあり、すべてのファイルに対してプロパティファイルを作成しました。例:top.fxml top.propertiesすべてのプロパティファイルをロードする方法は?JavaFX 2と国際化ロードプロパティファイル

私はそのような何かをしようとするが、その私はそれを試していないが、それはちょうどあなたのロード前にバンドルを毎回設定するのと同じくらい簡単であるべき

Locale locale = new Locale("fr", "FR"); 
    ResourceBundle bundle = ResourceBundle.getBundle("i18n.bottom", locale); 
    ResourceBundle bundle2 = ResourceBundle.getBundle("i18n.top", locale); 

    FXMLLoader loader = new FXMLLoader(getClass().getResource("main.fxml")); 
    loader.setResources(bundle); 
    loader.setResources(bundle2); 
    Parent root = loader.load(); 

答えて

1

を働いていない:

FXMLLoader loader = new FXMLLoader(getClass().getResource("main.fxml")); 
loader.setResources(bundle); 
Parent firstBundleRoot = loader.load(); 
loader.setResources(bundle2); 
Parent secondBundleRoot = loader.load(); 

これは、あなたがしようとしていることは、異なるバンドルの複数のノードツリーを生成することであることを前提としています。それぞれのバンドルは、異なるバンドルテキストによってカスタマイズされています。

私は


はおそらく、あなたは以下を実行しようとしている...私はあなたの質問で何かを見逃しているかもしれ感覚を得るのですか?私は、さまざまなリソースバンドルからマージされたリソースが含まメガリソースバンドルのいくつかの種類を作成するための解決策だと思う

。この場合、各バンドルを別々にロードして、毎回FXMLをロードして複数のルートペインを表示するのではなく(まず、この答えの前の部分が示すように)、バンドルをマージして、時間が1つのルートペインになります。 merge(bundle1, bundle2)

FXMLLoader loader = new FXMLLoader(getClass().getResource("main.fxml")); 
loader.setResources(merge(bundle1, bundle2)); 
Parent root = loader.load(); 

は、リンクされた質問で回答に基づいて自分自身を開発するいくつかの機能です。

+0

私は試してみる必要がありますが、2番目の解決策は良いと思われます – mikl