我正在使用一些FXML开发JavaFX桌面应用程序。但是我必须在运行时实际更改视图,因此我将多次加载FXML(并且还要更改使用的语言设置),所以我开始考虑是否可以在不同的线程中加载FXML组件。我想出了这个:
new Thread(() -> {
Node n;
try {
n = (Node) FXMLLoader.load(getClass().getResource("/fxml/Scene.fxml"));
Platform.runLater(() -> {
root.getChildren().add(n);
});
} catch (IOException ex) {
Logger.getLogger(MainApp.class.getName()).log(Level.SEVERE, null, ex);
}}).start();
新线程加载组件和平台,而不是将其发送到应用程序线程。
是否安全或是否存在我跳过的问题?在任何地方使用它都会有点过分吗?