Попытка установить сцену как владельца всплывающего окна, но всплывающее окно не отображается, если владелец не является основной стадией приложения.JavaFX Popup не отображается, если окно владельца не отображается
public void popup(Window owner, String mensagem) {
Popup popup = new Popup();
popup.setAutoHide(true);
popup.setHideOnEscape(true);
Label label = new Label(mensagem);
label.setBackground(new Background(new BackgroundFill(Color.CORNSILK, null, null)));
popup.getContent().add(label);
popup.setOnShown((event) -> {
FadeTransition fade = new FadeTransition(Duration.seconds(5), label);
fade.setOnFinished((e) -> {
popup.hide();
});
fade.play();
});
popup.show(owner);
}
Ребенок Этап:
public class JanelaModal extends Stage {
public JanelaModal(String title) {
super(StageStyle.DECORATED);
setTitle(title);
initOwner(Main.getInstance().getStage());
initModality(Modality.APPLICATION_MODAL);
setResizable(false);
}
public void setGui(Parent gui) {
if (getScene() != null) {
getScene().setRoot(gui);
} else {
setScene(new Scene(gui));
}
}
}
Спасибо за ответ. Кажется, окно владельца должно быть видимым, когда отображается всплывающее окно. В моем случае дочернее окно закрывается, поэтому главное окно должно быть владельцем всплывающего окна. Интересно, почему в документации не упоминается, что это не так очевидно. – ceklock