2012-05-15 27 views
1

我有一个用JavaFX编写的应用程序(使用FXML)。我正在尝试国际化我的应用程序。我试图按照this tutorial中描述的方式去做。为什么ResourceBundle为null(在使用FXML和JavaFX 2.0的应用程序中)

我有文字像这样的属性文件:提交=Войти

我有一个按钮,在FXML描述:

<Button id="button1" fx:id="submit" layoutX="69.0" layoutY="200.0" onAction="#loginFired" prefHeight="45.0" prefWidth="97.0" text="\%submit" /> 

属性文件FXML文件在同一目录下。

但我的按钮没有一个文本,我期望它有,它被写入“%submit”,但不是“Войти”。 然后我试图做这样的事情在this one tutorial 在我intialize方法我有徐代码:

@Override 
public void initialize(URL arg0, ResourceBundle resources) { 
    if(resources == null) 
     System.out.println("error"); 
} 

,它给了我一个“错误”消息日志。

那么,我做错了什么?

回答

3
text="\%submit" 

\字符意味着逸出的下一个字符是%在这种情况下,得到的将被写为“%提交”在输出中。所以正确的用法是text="%submit"

如果您使用的是FXMLLoader那么不要忘记设置资源以及​​加载FXML文件:

fxmlLoader.setResources(ResourceBundle.getBundle("bundles.MyBundle", locale)); 

再次JavaFX 2 and Internationalization找完整的例子。
同时检查ResourceBundle.getBundle("bundles.MyBundle", locale)的结果是否为空。

+0

正如这一条语句* if(resources == null)*所示,我的ResourceBundle资源为空。而一个问题是我做错了,它是空的? –

+1

要么你没有通过'fxmlLoader.setResources()'或'ResourceBundle.getBundle(“bundles.MyBundle”,locale)''设置资源返回null。当然还有其他的原因。 –

相关问题