java - 无法调用“javafx.scene.control.MenuButton.getScene()
问题描述
我将我的“普通”Javafx 项目转换为 maven 项目以生成模块化图像。现在我按下菜单按钮加载 fxml 文件时收到此错误。尽管出现错误,但仍会加载 fxml。
@FXML
private AnchorPane content = new AnchorPane();
@FXML
private Menu diagramOptions;
@FXML
void openSimpleMode(ActionEvent event) throws InvalidFileFormatException, IOException {
diagramOptions.setVisible(true);
FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/SimpleMode.fxml"));
Node simpleModePane = null;
try {
simpleModePane = loader.load();
} catch (Exception e) {
System.out.println("error in loading pane");
}
content.getChildren().clear();
content.getChildren().add(simpleModePane);
simplecontroller = loader.getController();
if (simplecontroller != null) {
simplecontroller.initData(ldfParser, methods, this);
} else {
System.out.println("null Pointer exception");
}
System.out.println("error after this");
}
如果我删除diagramOptions.setVisible(true);
错误没有出现
完整的堆栈跟踪:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Cannot invoke "javafx.scene.control.MenuButton.getScene()" because the return value of "javafx.scene.control.skin.MenuButtonSkinBase.getSkinnable()" is null
at javafx.controls/javafx.scene.control.skin.MenuButtonSkinBase.lambda$new$7(MenuButtonSkinBase.java:188)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
at java.base/java.lang.Thread.run(Thread.java:832)
在将其转换为 Maven 之前一切正常
解决方案
问题是javafx中的一个错误。我切换到版本 15,一切正常
推荐阅读
- javascript - 如何使图像总是转到下一张
- reactjs - React-select typescript 升级 3 到 4
- spring-boot - @JoinColumn 以及它如何链接两个表
- sequelize.js - 包含在带有 Sequelize 的中间表中
- node.js - 在 Express/Mongoose 应用程序(控制器和模型)中验证输入的最佳实践
- java - sbt 测试错误:java.lang.RuntimeException:/packages 不能表示为 URI
- c++ - 如何使用 -Ofast 保持 gcc 7 和 gcc 9 之间的兼容性
- linux - 如何在短时间戳中检测对文件的大量访问?
- payment - 分期付款即使应该被拒绝也接受信用卡
- python - Google Cloud Vision AutoML 和 TensorFlow 对象检测的差异