【发布时间】:2014-06-06 10:20:08
【问题描述】:
我最近安装了新的 Java 8u5 更新,因此我可以使用 lambda 操作和新的 Scene Builder,但是我立即在加载 FXML 文档时遇到了问题。在我在另一个线程中执行此操作并使用 Platform.runLater(...) 使用 FXMLLoader 加载之前。但是这不起作用,所以我把它放在 JavaFX 应用程序线程上,如下所示:
ready.addListener((ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) -> {
if (Boolean.TRUE.equals(t1)) {
Platform.runLater(() -> {
try {
//skipped loading the other FXML documents for this post...
final FXMLLoader load = new FXMLLoader(guiResource);
final GUIController guiController = new GUIController();
load.setController(guiController);
scene = new Scene((AnchorPane) load.load());
stage.setScene(scene);
} catch (IOException ex) {
Util.err(ex.getLocalizedMessage());
}
stage.show();
});
}
}
但是我仍然在 netbeans 控制台中收到这个相当无用的帖子:
file:/C:/Users/Blah/path/to/my/Application.jar!/resources/GUI2.fxml
这就是它所说的。有没有其他人有这个问题?这是什么意思?为什么.jar后有感叹号?
我认为问题可能与我在控制器中的变量声明有关,所以这里是一个示例:
@FXML
Region fileImportVeil;
@FXML
ProgressIndicator fileImportProgressIndicator;
我的意思是把private 放在我所有的 FXML 字段前面吗?
【问题讨论】:
-
你不需要把
private放在它前面。如果您不使用任何(包私有)、私有或受保护变量,则需要@FXML注释,而对于公共变量则不需要。.jar!表示资源在内部 JAR。您需要提供更多数据才能提供帮助,从异常的堆栈跟踪开始。 -
不知道异常在哪里;它给我的只是文件的路径,没有堆栈跟踪,否则我会发布它!
-
您正在使用
Util.err(ex.getLocalizedMessage())吞下堆栈跟踪,因此您只显示错误消息。 -
这个问题不是题外话,我已经找到了我认为可以帮助其他人的解决方案,如果他们有同样的问题。所以请取消保留,以便我回答。