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);
}
}
我已经跟踪了代码,调试显示流已经成功加载了资源(请参阅附件)。
该资源具有所需的索引,但fxml没有加载字符串,而是使用崩溃 原因:。。。javafx。fxml。LoadException:未指定任何资源/C://家fxml:22
fxml中的行是:
<Label fx:id="languageLabel" text="%displayLanguage" />
资源包是:
applicationTitle=Service222222
displayLanguage=English
那么我有什么遗漏吗?由于datafx的加载模式不同(控制器指定fxml文件),我是否可以不再直接从fxml文件进行翻译
# 1 楼答案
对于遇到此问题的其他人: 这是由于在流上调用
createHandler()
方法时出现错误造成的。当前DataFx实现忽略与流关联的ViewConfiguration
对象,并在返回FlowHandler
对象时始终创建新配置(资源始终为空)作为一种解决方法,避免调用
createHandler(
来获取FlowHandler
对象。相反,通过调用FlowHandler
构造函数来手动创建它,该构造函数将视图配置作为参数applicationRootFlowHandler = new FlowHandler(applicationRootFlow, new ViewFlowContext(), viewConfig);