2015-12-08 37 views
0

我超越困惑,我不知道在哪裏,即使這個項目開始,這是由於明天。我們去了字面上的JavaFX的一張幻燈片,他們分配我們的一個項目 - 使整個遊戲,突圍或是太空入侵者。我希望我誇大其詞。試圖加載FXML文件定做的JavaFX遊戲類(由教授製作)

這是我目前的問題:我試圖在我的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,應該是有幫助的。

我意識到這個問題已經被問了很多,但我一直沒能使用比標準窗格/場景類以外的任何獲得FXML文件找到任何東西。如果這是一個簡單的修復 - 真棒!對不起,這樣的菜鳥。

回答

1

那麼嘗試其中之一:

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)); 
+0

game.getScene()setRoot(myPane)。似乎做了詭計,我會永遠不知道使用這個...我真的很感激它。 – Mazzone