2017-10-13 9 views
0

JavaFXでシーンを切り替えようとしていますが、ハードコーディングしても機能しないようで、ラムダ式を使用して動作させることができました。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(); 
} 

プロジェクトはいくつかの異なるGUIを含み、それらにFXの道をハードコーディングするよりも、私はFXMLシーンBuilderでのGUIのを設計することを好むだろうが。しかし、私がFXMLをやろうとすると、ボタンを押したときにエラーが表示されます。 part 1part 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

あなたの投稿では、 '初期化可能な{'と 'public class Main extends Application {'はコードとしてフォーマットされていません。 – SteveFest

+0

申し訳ありませんが、今修正する予定です。その点をありがとう。 – HoiSinz

答えて

0

あなたが投稿したエラーは、コードがボタンをアンカーペインとしてロードしようとしていると言います。あなたがfxでアンカーペインを持っているかどうかを確認してください。私はbutton1のでしょう。

+0

ありがとうございます。 – HoiSinz

関連する問題