我很困惑,我不知道从哪里开始这个项目,而且明天就要到期。我们实际上浏览了一张 JavaFX 幻灯片,他们给我们分配了一个项目 - 制作一个完整的游戏,《Breakout》或《Space Invader》。我希望我是夸张了。
这是我当前的问题:我试图在我的 Driver 类中使用 FXML 文件,但他为我们提供的 Game 类没有扩展 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 类之外,我还没有找到任何其他方法来获取 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));
关于java - 尝试将 FXML 文件加载到定制的 JavaFX Game 类(由教授制作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147761/