JavaFX - автоматически показывать окно предупреждения после его закрытия - PullRequest
0 голосов
/ 07 мая 2019

Я хочу снова автоматически отобразить окно предупреждения после его закрытия, это зависит от определенного условия.Вот мой код:

protected void showInputDialog()
{
    FXMLLoader loader = new FXMLLoader(getClass().getResource("AddRecordDialog.fxml"));
    Parent root = loader.load();
    Scene scene = new Scene(root);
    AddRecordDialogController addRecordDialogController = (AddRecordDialogController)loader.getController();
    addRecordDialogController.setAddNewSalesDialogController(this);
    addRecordDialogController.setInvoice(this.invoice);
    this.addRecordDialog = new Stage();
    this.addRecordDialog.setTitle("Add Record");
    this.addRecordDialog.initModality(Modality.APPLICATION_MODAL);
    this.addRecordDialog.initOwner(root.getScene().getWindow());
    this.addRecordDialog.setScene(scene);
    this.addRecordDialog.sizeToScene();
    this.addRecordDialog.setResizable(false);
    //Event handler for when a Window is closed.
    this.addRecordDialog.setOnHiding(new EventHandler<WindowEvent>()
    {
        @Override
        public void handle(WindowEvent we)
        {
            if(nextItem == true)
               showInputDialog();
            nextItem = false;
        }
    });
    this.addRecordDialog.showAndWait();
}

Второй диалог появляется, но первый диалог не исчезает.Диалог программно закрывается с stage.close(); где-то еще.Я видел здесь , что вам нужно вызвать метод setOnHiding для программного закрытия события.Если я удалю обработчик события, предыдущий этап закроется.Но я хочу открыть новый экземпляр этой стадии снова после ее закрытия.Пожалуйста, помогите.

Редактировать: ... да, я проверил для переменной nextItem это было true,

Я использовал System.out.println("Next Item: " + nextItem);

1 Ответ

0 голосов
/ 07 мая 2019

На основании комментария kendavidson я нашел решение. Я изменил код на:

        this.addRecordDialog.setOnHidden(new EventHandler<WindowEvent>()
        {
            @Override
            public void handle(WindowEvent we)
            {
                System.out.println("Next Item: " + nextItem);
                if(nextItem == true)
                {
                    nextItem = false;
                    showInputDialog();
                }
            }
        });

Спасибо, Кендавидсон.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...