2015-08-30 2 views
0

Я хочу написать простое приложение, где, когда вы нажимаете, чтобы закрыть - новое окно (этап) подталкивает вас и спрашивает, действительно ли вы этого хотите. Я знаю, как это реализовать программно, но не знаю, как это реализовать, используя fxml и controllers.Общение между этапами в JavaFx (с использованием * .fxml)

Если на основной стадии подачи заявки и подтверждения стадии будут разделены с помощью controllers и каждый controller будет отображаться на один fxml файл только как я могу вернуть значение результата от подтверждения на главной сцене?

ответ

1

Я думаю, вам может понадобиться простой Dialog или Alert. Если вам не нравится, как выглядят по умолчанию Java Dialogs, вы можете расширить DialogPane (или сам диалог), спроектировать его в FXML и setDialogPane для вашего диалога.

Вот как создать, шоу и получить результат от простого оповещения без какой-либо фантазии выглядит:

Alert alert = new Alert(Alert.AlertType.CONFIRMATION); 
alert.showAndWait().ifPresent(response -> { 
if (response == ButtonType.OK) { 
    System.out.println("User clicked OK"); 
} 
}); 

В рамках закрытия основного этапа. Вы можете перехватывать и обрабатывать запросы.

stage.setOnCloseRequest(new EventHandler<WindowEvent>() { 
     @Override 
     public void handle(WindowEvent event) { 
      System.out.println("I will not close"); 
      event.consume(); 
     } 
    }); 

Поглощая это событие, вы можете предотвратить этап закрытия, если хотите.

Так что если вы хотите получить подтверждение от пользователя, просто поместите Alert в обработчик onCloseRequest и используйте событие, если он решит (клики для отмены).

Смежные вопросы