为什么ResourceBundle为null(在使用FXML和JavaFX 2.0的应用程序中)

时间:2012-05-15 15:18:37

标签: javafx-2 fxml

我有一个用JavaFX编写的应用程序(使用FXML)。我正在尝试将我的应用程序国际化。我试图像this tutorial中描述的那样去做。

我有一个包含以下文字的属性文件: submit =Войти

我有一个按钮,在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之类的事情 在我的初始化方法中,我有一些代码:

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

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

那么,我做错了什么?

1 个答案:

答案 0 :(得分:3)

text="\%submit"

\字符表示在这种情况下转义下一个字符%,导致在输出中写为“%submit”。所以正确的用法是text="%submit"

如果您使用FXMLLoader加载FXML文件,那么不要忘记设置资源:

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

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