2017-10-13 105 views
0

所以,我試圖在JavaFX中切換場景,但我似乎無法讓它工作,當我硬編碼它時,我可以通過使用lambda表達式得到它的工作。在JavaFX(FXML)中切換場景的錯誤

public class Main extends Application { 

Stage window; 
Scene scene1; 
Scene scene2; 

public static void main(String[] args) { 
    launch(args); 
} 

@Override 
public void start(Stage primaryStage) throws Exception { 
    window = primaryStage; 

    Label label = new Label("Welcome to the first scene"); 
    Button bttn1 = new Button("Go to second scene"); 
    bttn1.setOnAction(e -> window.setScene(scene2)); 

    //Scene 1 
    VBox layout1 = new VBox(20); 
    layout1.getChildren().addAll(label, bttn1); 
    scene1 = new Scene(layout1, 400, 400); 

    //Scene 2 
    Button bttn2 = new Button("Go to first scene"); 
    bttn2.setOnAction(e -> window.setScene(scene1)); 

    StackPane layout2 = new StackPane(); 
    layout2.getChildren().add(bttn2); 
    scene2 = new Scene(layout2, 400, 500); 

    window.setScene(scene1); 
    window.setTitle("Test"); 
    window.show(); 
} 

但是該項目涉及到幾個不同的圖形用戶界面,我寧願在設計場景FXML Builder中的GUI的比他們硬編碼方式FX。但是,當我嘗試執行FXML方式時,它沒有起作用,當我按下按鈕時總會出現錯誤。

錯誤消息 part 1 part 2

這是文檔控制器代碼。

public class FXMLDocumentController implements Initializable { 

@FXML 
private Button button1; 

@FXML 
private Button button2; 

@FXML 
private void handleButtonAction(ActionEvent event) throws IOException { 
    Stage stage; 
    Parent root; 

    if(event.getSource() == button1){ 
     stage=(Stage)button1.getScene().getWindow(); 

     root = FXMLLoader.load(getClass().getResource("FXML2.fxml")); 
    } 
    else{ 
     stage=(Stage)button2.getScene().getWindow(); 
     root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 
    } 
    Scene scene = new Scene(root); 
    stage.setScene(scene); 
    stage.show(); 

} 

@Override 
public void initialize(URL url, ResourceBundle rb) { 
    // TODO 
}  

} 
+0

在你的文章中,'Initializable {'和'public class Main extends Application {'沒有被格式化爲代碼。 – SteveFest

+0

對不起,我現在就解決這個問題。感謝您的光臨。 – HoiSinz

回答

0

您發佈的錯誤說明代碼試圖加載按鈕作爲錨定窗格。檢查一下,看看你是否有fx的anchorpane:我想要button1。

+0

我會檢查並讓你知道謝謝你。 – HoiSinz