У меня есть приложение, в котором я вызываю следующий код, когда возникает исключение, то есть он находится в пределах «улова» «попробовать/уловить». Он просто создает «всплывающее» окно, которое вместо этого предлагает пользователю ввести целое число.
Stage dialogStage = new Stage();
dialogStage.initModality(Modality.WINDOW_MODAL);
dialogStage.setScene(new Scene(VBoxBuilder.create().
children(new Text("Please enter an integer."), new Button("Ok.")).
alignment(Pos.CENTER).padding(new Insets(5)).build()));
dialogStage.show();
Единственная проблема заключается в том, что этап задерживается, даже если первичный этап (то есть параметр в public void start(Stage primaryStage)) закрыт.
Что я пробовал?:
Я сделал сцену диалога видимой во всем классе, определив ее как переменную класса. Затем я реализовал следующий код:
primaryStage.setOnCloseRequest((new EventHandler<WindowEvent>(){
@Override
public void handle(WindowEvent arg0) {
arg0.consume();
try
{
dialogStage.close();
}
catch(Exception ex)
{
System.out.print(ex.getMessage()+"\r\n");
}
}
}));
}
Это «работает» в том смысле, что диалоговое окно закрывается, когда пользователь пытается выйти из основного приложения, однако на самом деле это не делает того, что я хотел: когда вы пытаетесь закрыть основной этап, закрывается только диалоговое окно.
Это также неприятное с эстетической точки зрения решение, так как я не хочу, чтобы весь класс знал о глупом диалоговом окне, которое находится только в одной попытке/улове и может никогда не использоваться.
Я хотел бы знать, есть ли простое решение, которое сообщает диалоговому окну закрыться, когда основной этап закрывается, и где мне не нужно писать много кода за пределами моей попытки/поймать.