javafx - JavaFX:单击按钮打开第二个阶段/窗口时出错(使用 fxml)
问题描述
我创建了一个游戏,启动时会显示一个开始页面/窗口,其中包含退出或开始游戏的选项。单击开始按钮时应打开第二个窗口,但出现以下错误:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Root cannot be null
我已经阅读了这个错误,但似乎没有任何建议有效。这是我使用 start 方法的主要课程:
package game;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.File;
import java.net.URL;
public class AdventureGame extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
primaryStage.setTitle("EBRUTATEN - The Curse of Methuselah");
URL url = new File("F:\\[0] Programming 3.1\\[0] CAPSTONE ASSIGNMENT\\[0] Current Working File\\MyJavaFXGame2\\src\\fxml\\sample.fxml").toURI().toURL();
Parent root = FXMLLoader.load(url);
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String...args) {
launch(args);
}
}
这是其控制器类中处理按钮操作的开始按钮方法
public void startButClicked() {
startBut.setOnAction(event -> {
Parent gameOutput = null;
try {
URL url = new File("F:\\[0] Programming 3.1\\[0] CAPSTONE ASSIGNMENT\\[0] Current Working File\\MyJavaFXGame2\\src\\fxml\\game.fxml").toURI().toURL();
gameOutput = FXMLLoader.load(url);
} catch (IOException e) {
e.printStackTrace();
}
Scene gameView = new Scene(gameOutput);
Stage secStage = (Stage) ((Node) event.getSource()).getScene().getWindow();
secStage.setScene(gameView);
secStage.show();
mediaPlayerStarterMusic.stop();
});
}
任何意见,将不胜感激。
解决方案
推荐阅读
- java - 在 Maven 部署中命名 .tar
- html - 如何将不同的网址设置为
- sql - 在选择函数中获取最大值
- entity-framework - 为什么 EF 核心数据上下文更新外键对象集合?
- apache-kafka - Kafka:描述消费者组偏移量
- python - 带有 GoogleNews-vectors-negative300.bin 的 word2vec 错误
- python-3.x - 每秒闪烁一个按钮
- javascript - 简单的正则表达式总是跳过一行的第一个字符
- docker - 在 Erlang Ephemeral 端口选择上设置特定范围以在 Docker 中使用
- javascript - 从 javascript 获取 python 数据