Javafx切换窗口,同时保持先前打开状态

时间:2018-08-16 22:16:49

标签: java javafx model-view-controller

我需要主菜单来生成子窗口并使主窗口保持打开状态,但是我在该主题上找不到任何内容。目前,使用下面的代码,我可以打开一个新窗口,但是它隐藏了主窗口并代替了它。

我似乎找不到答案的另一个问题是如何创建一个控制器,该控制器将在MyApp的start()方法中设置,该控制器将允许该控制器处理所有窗口切换并保持需要在所有窗口之间共享的任何数据。我认为正确的术语是我想创建一个MVC架构,但我只是想不出一种适当的方式来临时实现它。

public class MyApp extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("MainMenu.fxml"));
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

public class MainMenuController implements Initializable {
    @Override
    public void initialize(URL url, ResourceBundle rb) {

    }
    @FXML
    private void handleButtonAction(ActionEvent event) {
        Button button = (Button) event.getSource();
        Stage stage = (Stage) button.getScene().getWindow();
        openWindow("SecondMenu.fxml", stage);
    }

    public void openWindow(String window, Stage stage) {
        try {
            Parent root = FXMLLoader.load(getClass().getResource(window));
            Scene scene = new Scene(root);
            stage.setScene(scene);
            stage.show();
        } catch (Exception e) {
            System.out.println("Failed to open new window: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

编辑: MVC链接可用于我的目的,但我最初询问的问题是如何在不关闭前一个窗口的情况下生成窗口,并且在尝试进行代码链接后,它仍然具有关闭前一个窗口的行为,因此这似乎不是重复的。那。

0 个答案:

没有答案