尝试将 FXML 文件加载到定制的 JavaFX 游戏 class(由教授制作)
Trying to load FXML file to custom-made JavaFX Game class (made by professor)
我很困惑,我什至不知道从哪里开始这个项目,它将于明天到期。我们从字面上浏览了一张 JavaFX 幻灯片,他们给我们分配了一个项目——制作一个完整的游戏,Breakout 或 Space Invader。我希望我是在夸大其词。
这是我当前的问题:我正在尝试在我的驱动程序中使用 FXML 文件 class 但是他提供给我们的游戏 class 没有扩展 Pane,这是我唯一的方法知道获取 FXML 资源。
下面是一些代码:
public class Driver extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Game game = new Breakout(primaryStage);
try {
game = FXMLLoader.load(getClass().getResource("BreakoutFXML.fxml"));
} catch (IOException e) {
System.out.println(e);
System.exit(1);
} // try
primaryStage.setTitle(game.getTitle());
primaryStage.setScene(game.getScene());
primaryStage.show();
game.run();
} // start
我收到这个 运行 时间错误:
Caused by: java.lang.ClassCastException: javafx.scene.layout.Pane cannot be cast to com.michaelcotterell.game.Game
at cs1302.fxgame.Driver.start(Driver.java:19)
表示(我认为)我不能使用这种获取FXML文件的方法,那我该怎么办?
这里的link to his documentation for the Game class,应该会有帮助。
我意识到这个问题已经被问了很多,但是除了标准 Pane/Scene classes 之外,我找不到任何东西来获取 FXML 文件。如果这是一个简单的修复 - 太棒了!很抱歉成为这样的菜鸟。
好吧,尝试其中之一:
Pane myPane = FXMLLoader.load(getClass().getResource("BreakoutFXML.fxml"));
// 1
game.getScene().getRoot().add(myPane);
// 2
game.getScene().setRoot(myPane);
// 3
game.getStage().setScene(new Scene(myPane));
我很困惑,我什至不知道从哪里开始这个项目,它将于明天到期。我们从字面上浏览了一张 JavaFX 幻灯片,他们给我们分配了一个项目——制作一个完整的游戏,Breakout 或 Space Invader。我希望我是在夸大其词。
这是我当前的问题:我正在尝试在我的驱动程序中使用 FXML 文件 class 但是他提供给我们的游戏 class 没有扩展 Pane,这是我唯一的方法知道获取 FXML 资源。
下面是一些代码:
public class Driver extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Game game = new Breakout(primaryStage);
try {
game = FXMLLoader.load(getClass().getResource("BreakoutFXML.fxml"));
} catch (IOException e) {
System.out.println(e);
System.exit(1);
} // try
primaryStage.setTitle(game.getTitle());
primaryStage.setScene(game.getScene());
primaryStage.show();
game.run();
} // start
我收到这个 运行 时间错误:
Caused by: java.lang.ClassCastException: javafx.scene.layout.Pane cannot be cast to com.michaelcotterell.game.Game
at cs1302.fxgame.Driver.start(Driver.java:19)
表示(我认为)我不能使用这种获取FXML文件的方法,那我该怎么办?
这里的link to his documentation for the Game class,应该会有帮助。
我意识到这个问题已经被问了很多,但是除了标准 Pane/Scene classes 之外,我找不到任何东西来获取 FXML 文件。如果这是一个简单的修复 - 太棒了!很抱歉成为这样的菜鸟。
好吧,尝试其中之一:
Pane myPane = FXMLLoader.load(getClass().getResource("BreakoutFXML.fxml"));
// 1
game.getScene().getRoot().add(myPane);
// 2
game.getScene().setRoot(myPane);
// 3
game.getStage().setScene(new Scene(myPane));