Mam aplikacji, w której wywołuję następujący kod, gdy wystąpi wyjątek - to znaczy, że znajduje się w "catch" "try/catch". Tworzy jedynie okno podobne do "popup", które mówi użytkownikowi o wpisaniu int.Jak zamknąć wszystkie etapy, gdy główny etap jest zamknięty?
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();
Jedynym problemem jest to, że etap zwleka nawet jeśli podstawowy etap (który jest parametrem w public void start (Stage primaryStage)) jest zamknięty.
Co mają Próbowałem ?:
Zrobiłem dialogstage widoczne w całej klasy, definiując go jako zmienną klasy. Potem realizowany następujący kod:
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");
}
}
}));
}
This „działa”, że dialogstage jest zamknięty, gdy użytkownik próbuje wyjść z głównego aplikacji, jednak w rzeczywistości nie robić to, co zamierzałem: podczas próby zamknięcia główny etap tylko okno dialogowe jest zamknięte.
Jest to również rozwiązanie nieprzyjemne pod względem estetycznym, ponieważ nie chcę, aby cała klasa wiedziała o tym głupim oknie dialogowym, które znajduje się tylko w jednym try/catch i nigdy nie będzie używane.
Chciałbym wiedzieć, czy istnieje proste rozwiązanie, które nakazuje zamknąć okno dialogowe podczas podstawowego etapu i gdzie nie muszę pisać dużo kodu poza próbą/catch.
wydaje się dobre, ale w stanie przetestować go teraz. Dzięki. –
Działa jak matka. Dzięki! –