JavaFX各个界面跳转的超野路子实现

本方法由于的确是本人想出来的,还没搜到有人的讨论,感觉可能会导致不安全,未证实谨慎在大项目中使用,但是作为学生对付作业处理窗口跳转真是十分方便。

跳转时关闭窗口

这个不论有没有用fxml都可以用

由于这个程序是自动调用的,在程序入口类重写start的时候系统给的primaryStage,我们无法在建立时就把它放到特定地方,于是本方法:
制造一个公共的空间(类),里面都是static的数据与方法,全局可调用。

public class Common {
    public static Stage currentStage;

在入口类重写start里面将stage对象的位置记录到公共类,获取:

public void start(Stage primaryStage) throws Exception{
        Common.currentStage = primaryStage;
        Common.currentRoot = FXMLLoader.load(getClass().getResource("LoginScene.fxml"));//加载也可以用公共的,但是必须在相应stage里面,在生成别的stage时赋值给这个根再使用好像会出错,不推荐使用

在公共中记录我们需要的stage,当然可以做成Array或者Arraylist记录更多的stage,然后需要关闭时调用此公共类中stage的对象关闭之。比如:在登录界面跳转按钮行为的方法中调用:

Common.currentStage.close();

开启窗口

用到fxml
本人实现窗口跳转是在需要跳转的地方(比如点击动作相对应的方法等)调用一个在主方法类中的建立stage方法,如下:

    //开启第三个界面
    public static void startEditScene() {
        Stage thirdScene = new Stage();
        Parent root = null;
        try {
            root = FXMLLoader.load(Main.class.getResource("EditScene.fxml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        thirdScene.setTitle("修改界面");
        thirdScene.setScene(new Scene(root));
        thirdScene.show();
    }

关于新版JavaFX各模块关系的理解

Main类管理入口以及第一个界面的出现,上面两个方法需要将建立新stage的方法写在这个main里面
每次在stage里面用,如上面的开启第三个界面方法。
开stage之前获取fxml类型的界面资源:

 root = FXMLLoader.load(Main.class.getResource("EditScene.fxml"));

在fxml中,在最根的pane指定总的controller


  

controller.java管理界面之下的所有动作以及界面的数据

本人学生,欢迎指正和补充

你可能感兴趣的:(javafx,java)