【问题标题】:Set and Change Resource Bundle with Afterburner.fx使用 Afterburner.fx 设置和更改资源包
【发布时间】:2016-06-28 17:13:54
【问题描述】:

我正在尝试使用 Afterburner.fx (https://github.com/AdamBien/afterburner.fx/) 在 JavaFX 中创建多语言软件。我不明白是否有办法设置或注入 Afterburner 视图使用的资源包,也不知道是否有办法让不同的资源包到不同的视图并在运行时更改资源包。

在普通的 javafx 中,可以为 fxml 视图设置资源包,如下例所示,但是如何使用 afterburner 执行此操作?

private void loadView(Locale locale) {
try {
  FXMLLoader fxmlLoader = new FXMLLoader();

  // Here, just the resource bundles name is mentioned. You can add support for more languages
  // by adding more properties-files with language-specific endings like
  // "E_13_Internationalization_fr.properties".
  fxmlLoader.setResources(ResourceBundle.getBundle("E_13_Internationalization", locale));

  Pane pane = (BorderPane) fxmlLoader.load(this.getClass().getResource("/E_13_Internationalization.fxml").openStream());
  borderPane.setCenter(pane);
} catch (IOException ex) {
  ex.printStackTrace();
}

}

【问题讨论】:

    标签: java javafx resourcebundle


    【解决方案1】:

    要加载 ResourceBundle afterburner.fx 会根据包名 + 视图类的名称构建一个 bundleName,例如:

    packagename.ExampleView -> packagename.example //('View' at the ending gets removed)
    packagename.ExampleApp -> packagename.exampleapp
    

    用于ResourceBundle.getBundle(name)

    按照该约定,您必须为每个视图创建一个单独的 resourceBundle,并将其放置在相应的视图包中。

    如果您想为所有视图使用不同的命名模式或单个 resourceBundle,您可以在调用 exampleView.getView() 之前设置 resourceBundle,然后使用更新的 resourceBundle 初始化 FMXLLoader

    public abstract class BaseView extends FXMLView {
    
        public static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("bundleName");
    
        public BaseView() {
            this.bundle = RESOURCE_BUNDLE;
        }
    
        public BaseView(ResourceBundle bundle) {
            this.bundle = bundle;
        }
    
    }
    

    https://github.com/AdamBien/afterburner.fx/blob/master/src/main/java/com/airhacks/afterburner/views/FXMLView.java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多