在javaFX应用程序中更改窗口太慢

时间:2017-11-07 05:35:53

标签: java javafx javafx-8 scenebuilder

我正在javafx中开发一个具有多个窗口的应用程序,以创建一个我正在使用此方法的新窗口:

 public static void LaunchNextSceneWithWait(String fxmlName, String title){

    try {
        Parent root = FXMLLoader.load(SceneLoader.class.getClassLoader().getResource("scia/cbtav3/view/"+fxmlName));
        Stage stage = new Stage();
        stage.setTitle(title);
        stage.setScene(new Scene(root));
        stage.setResizable(false);
        stage.centerOnScreen();
        stage.showAndWait();
    }catch (IOException e) {
        e.printStackTrace();
    }

}

但是每次创建一个新窗口时它会做得太慢而且内存的使用量会显着增加,也许我正在做的方式非常糟糕,在下一个方法中,每次按钮启动时都会启动新窗口点击

 @Override
public void handle(ActionEvent event) {

    if(event.getSource() == btPrint){

        SceneLoader.LaunchNextSceneWithWait(Constants.PRINT_VIEW, Constants.TITLE_PRINT_WINDOW);

    }else if(event.getSource() == btLoanSTD){

        SceneLoader.LaunchNextSceneWithWait(Constants.LOAN_VIEWSTD, Constants.TITLE_LOAN_WINDOW);

    }else if(event.getSource() == btLoanEMP){

        SceneLoader.LaunchNextSceneWithWait(Constants.LOAN_VIEWEMP, Constants.TITLE_LOAN_WINDOW);

    }else if(event.getSource() == btOut){

        SceneLoader.LaunchNextSceneWithWait(Constants.OUT_VIEW, Constants.TITLE_OUT_WINDOW);

    }else if(event.getSource() == btIn){

        SceneLoader.LaunchNextSceneWithWait(Constants.IN_VIEW, Constants.TITLE_BUY_WINDOW);

    }else if(event.getSource() == btReq){

        SceneLoader.LaunchNextSceneWithWait(Constants.REQUISITION_VIEW, Constants.TITLE_REQUISITION_WINDOW);

    }else if(event.getSource() == btRep){

        SceneLoader.LaunchNextSceneWithWait(Constants.REPORT_VIEW, Constants.TITLE_REPORT_WINDOW);

    }else if(event.getSource() == btManagment){

        SceneLoader.LaunchNextSceneWithWait(Constants.MANAGMENT_VIEW, Constants.TITLE_MANAGMENT_WINDOW);

    }

}

我想知道如何重建LaunchNextSceneWithWait()方法以提高应用程序的性能。

谢谢!

0 个答案:

没有答案