如何在一个窗口中打开所有舞台?

时间:2020-01-09 21:03:24

标签: javafx javafx-8

我用JavaFX创建了一个小型软件。主窗口有几个按钮可以打开其他页面。但是,当我单击这些按钮时,它们会打开新窗口like in this picture

希望所有这些页面都像普通软件一样在单个窗口中打开。

这是所有这些按钮上的事件的代码。

@FXML
void Agenda(ActionEvent event) {

}

@FXML
void Informations(ActionEvent event) {
    try{

        FXMLLoader loade = new FXMLLoader(getClass().getResource("/cm/Project/View/Informations.fxml"));
        VBox root = (VBox) loade.load();
        Stage stage = new Stage();
        stage.setTitle("Bernon Storage");
        stage.setScene(new Scene(root));

        stage.show();
    } catch (Exception e){
        e.printStackTrace();
    }

}

@FXML
void Inscription(ActionEvent event) {
    try{
        FXMLLoader loade = new FXMLLoader(getClass().getResource("/cm/Project/View/Inscription.fxml"));
        VBox root = (VBox) loade.load();
        Stage stage = new Stage();
        stage.setTitle("Bernon Storage");
        stage.setScene(new Scene(root));
        stage.show();
    } catch (Exception e){
        e.printStackTrace();
    }

}

@FXML
void Notes(ActionEvent event) {
    try{
        FXMLLoader loade = new FXMLLoader(getClass().getResource("/cm/Project/View/Notes1.fxml"));
        VBox root = (VBox) loade.load();
        Stage stage = new Stage();
        stage.setTitle("Bernon Storage");
        stage.setScene(new Scene(root));
        stage.show();
    } catch (Exception e){
        e.printStackTrace();
    }

}

@FXML
void Staff(ActionEvent event) {
    try{
        FXMLLoader loade = new FXMLLoader(getClass().getResource("/cm/Project/View/Staff.fxml"));
        VBox root = (VBox) loade.load();
        Stage stage = new Stage();
        stage.setTitle("Bernon Storage");
        stage.setScene(new Scene(root));
        stage.show();
    } catch (Exception e){
        e.printStackTrace();
    }

}

@FXML
void Student(ActionEvent event) {
    try{
        FXMLLoader loade = new FXMLLoader(getClass().getResource("/cm/Project/View/Student.fxml"));
        VBox root = (VBox) loade.load();
        Stage stage = new Stage();
        stage.setTitle("Bernon Storage");
        stage.setScene(new Scene(root));
        stage.show();
    } catch (Exception e){
        e.printStackTrace();
    }

}

请帮助我解决此问题。这是我必须完成的唯一项目。

1 个答案:

答案 0 :(得分:3)

请查看下面的演示,以快速了解如何在同一窗口中加载不同的视图。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Window_Demo extends Application {
    BorderPane root;
    @Override
    public void start(Stage primaryStage) throws Exception {
        root = new BorderPane();
        Scene scene = new Scene(root, 500,500);
        primaryStage.setScene(scene);
        primaryStage.show();

        Button view1 = new Button("View 1");
        view1.setOnAction(e->{
            StackPane view = new StackPane(); // Load your fxml and get the node
            view.setStyle("-fx-background-color:red;-fx-opacity:.5;");
            root.setCenter(view);
        });
        Button view2 = new Button("View 2");
        view2.setOnAction(e->{
            StackPane view = new StackPane();  // Load your fxml and get the node
            view.setStyle("-fx-background-color:green;-fx-opacity:.5;");
            root.setCenter(view);
        });
        Button view3 = new Button("View 3");
        view3.setOnAction(e->{
            StackPane view = new StackPane();  // Load your fxml and get the node
            view.setStyle("-fx-background-color:blue;-fx-opacity:.5;");
            root.setCenter(view);
        });
        ToolBar toolBar = new ToolBar(view1,view2,view3);
        root.setTop(toolBar);
    }
}
相关问题