Открыть файл fxml на определенное время и вернуться на главный экран? - PullRequest
0 голосов
/ 11 июля 2019

Как отобразить файл fxml на несколько секунд, закрыть этот файл fxml и вернуться на главную страницу.fxml?

Я пытался добавить метод hideThispage к методу initialize в классе контроллера fxml, но я предполагаю, что методы initialize просто запускаются до фактической загрузки класса, поэтому я не могу запустить этот код.

@FXML
public void hideThisPage() throws InterruptedException, IOException {

    Window window = new Stage();
    PauseTransition pause = new PauseTransition(Duration.seconds(5));
    pause.setOnFinished(e -> window.hide());
    pause.play();
    FxmlDisplay fxmlDisplay = new FxmlDisplay();
    fxmlDisplay.stageSelection("View/Main.fxml");
}

Чтобы вернуться к main.fxml или любому другому fxml, у меня есть метод, который я вызываю:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(path));
            Parent root = fxmlLoader.load();
            Stage stage = new Stage();
            stage.setScene(new Scene(root));
            stage.show();

В моем случае в моем файле printreceipt.fxml есть кнопка печати, которая печатает содержимое. Затем он переключается на printpage.fxml (я могу перейти на страницу) Но моя проблема в том, что printpage.fxml должен отображаться только в течение 5 секунд и закрываться. тогда он должен вернуться к main.fxml. как и где я могу вызвать метод hidethisPage ()?

@FXML
    void printRandomTicket(ActionEvent event) throws SQLException, ClassNotFoundException, JRException, IOException, InterruptedException {
        FxmlDisplay fxmlDisplay = new FxmlDisplay();
        ((Node) event.getSource()).getScene().getWindow().hide();
        fxmlDisplay.stageSelection("/View/Dialogs/PrintingTicket.fxml");
        GenerateTicket generateTicket = new GenerateTicket();
        generateTicket.generateTicket();
        PrintTicket printTicket = new PrintTicket();
        printTicket.printTicket();
}

Надеюсь, это проясняет это.

...