У меня есть главное окно, поверх которого открывается диалоговое окно с сообщением об ошибке. В этот момент отображается оверлей между главным окном и диалоговым окном ошибки (часть стадии главного окна). mainWindowOverlay.setManaged(true)
При закрытии диалогового окна ошибки наложение должно исчезнуть. errorStage.setOnCloseRequest(we -> overlayOff())
Я не знаю, не зарегистрировано ли событие закрытия или возникла другая проблема, но наложение остается после закрытия диалогового окна с ошибкой.
Есть идеи?
controllerMainWindow. java
package packageA;
import [...];
public class controllerMainWindow extends AbstractController
{
@FXML
private AnchorPane mainWindowOverlay;
@FXML
private Button btnError;
//---------------------------------------------------------------------------------------------------
public void initialize()
{
mainWindowOverlay.setManaged(false);
}
//---------------------------------------------------------------------------------------------------
@FXML
public void handleButtonAction(ActionEvent event)
{
try {
if (event.getSource().equals(btnError)) {
FXMLLoader errorLoader = new FXMLLoader();
errorLoader.setLocation(getClass().getResource("errorDialog.fxml"));
controllerErrorDialog errorController = new controllerErrorDialog();
errorLoader.setController(errorController);
Parent layout;
layout = errorLoader.load();
Scene errorScene = new Scene(layout);
Stage errorStage = new Stage();
errorStage.initStyle(StageStyle.UNDECORATED);
errorController.setStage(errorStage);
if(this.main!=null) {
errorStage.initOwner(main.getPrimaryStage());
}
customerServiceOverlay.setManaged(true);
errorStage.initModality(Modality.APPLICATION_MODAL);
errorStage.setScene(errorScene);
errorStage.setX(750);
errorStage.setY(425);
errorStage.setOnCloseRequest(we -> overlayOff());
errorStage.showAndWait();
}
} catch (IOException exceptionHandleButtonAction) {
System.out.println("Error on handleButtonAction.");
exceptionHandleButtonAction.printStackTrace();
return;
}
}
//---------------------------------------------------------------------------------------------------
public void overlayOff()
{
customerServiceOverlay.setManaged(false);
}
//---------------------------------------------------------------------------------------------------
}
controllerErrorDialog. java
package packageA;
import [...];
public class controllerErrorDialog extends AbstractController implements Initializable {
@FXML
private Button btnClose;
@FXML
private Stage stage = null;
//---------------------------------------------------------------------------------------------------
@Override
public void initialize(URL url, ResourceBundle rb)
{
}
//---------------------------------------------------------------------------------------------------
public void setStage(Stage stage)
{
this.stage = stage;
}
//---------------------------------------------------------------------------------------------------
@FXML
public void handleButtonAction(ActionEvent event)
{
stage.fireEvent(new javafx.stage.WindowEvent(stage,
javafx.stage.WindowEvent.WINDOW_CLOSE_REQUEST));
stage.close();
}
//---------------------------------------------------------------------------------------------------
}