我感到困惑,我不知道从哪个项目开始,明天就要到了。我们翻阅了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文件。如果这是一个简单的解决方案 - 太棒了!很抱歉这样的菜鸟。
答案 0 :(得分:2)
试试其中一个:
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));