我用JavaFX创建了一个小型软件。主窗口有几个按钮可以打开其他页面。但是,当我单击这些按钮时,它们会打开新窗口。
希望所有这些页面都像普通软件一样在单个窗口中打开。
这是所有这些按钮上的事件的代码。
@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();
}
}
请帮助我解决此问题。这是我必须完成的唯一项目。
答案 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);
}
}