有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

DataFX中的java i18n,JavaFX应用程序获取LoadException:未指定资源

我不熟悉DataFX(并使用DataFx8),正在努力实现本地化。我的主要课程如下所示:

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        //set language
        ViewConfiguration viewConfig = new ViewConfiguration();
        Locale locale = new Locale("en","EN");
        viewConfig.setResources(ResourceBundle.getBundle(UIConstants.LANGUAGE_BUNDLE_PREFIX, locale));

        Flow applicationRootFlow = new Flow(HomeController.class, viewConfig);
        FlowHandler applicationRootFlowHandler = applicationRootFlow.createHandler();

        StackPane root = applicationRootFlowHandler.start(new DefaultFlowContainer());
        primaryStage.setScene(new Scene(root, UIConstants.APPLICATION_WIDTH, UIConstants.APPLICATION_HEIGHT));
        primaryStage.setTitle(UIConstants.APPLICATION_TITLE);
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

我已经跟踪了代码,调试显示流已经成功加载了资源(请参阅附件)。 enter image description here

该资源具有所需的索引,但fxml没有加载字符串,而是使用崩溃 原因:。。。javafx。fxml。LoadException:未指定任何资源/C://家fxml:22

fxml中的行是:

<Label fx:id="languageLabel" text="%displayLanguage" />

资源包是:

applicationTitle=Service222222
displayLanguage=English

那么我有什么遗漏吗?由于datafx的加载模式不同(控制器指定fxml文件),我是否可以不再直接从fxml文件进行翻译


共 (1) 个答案

  1. # 1 楼答案

    对于遇到此问题的其他人: 这是由于在流上调用createHandler()方法时出现错误造成的。当前DataFx实现忽略与流关联的ViewConfiguration对象,并在返回FlowHandler对象时始终创建新配置(资源始终为空)

    作为一种解决方法,避免调用createHandler(来获取FlowHandler对象。相反,通过调用FlowHandler构造函数来手动创建它,该构造函数将视图配置作为参数

    applicationRootFlowHandler = new FlowHandler(applicationRootFlow, new ViewFlowContext(), viewConfig);