У меня небольшая проблема с JavaFX.Я бы хотел, чтобы эти сцены были неокрашенными, но я получаю такое сообщение.Я знаю, что происходит, но я не знаю, как это решить.У вас есть идея, чтобы решить эту проблему?
Спасибо
Ошибка
Exception in thread "JavaFX Application Thread" java.lang.IllegalStateException: Cannot set style once stage has been set visible
at javafx.stage.Stage.initStyle(Stage.java:493)
at DialogsBoxes.exitConfirmation(DialogsBoxes.java:43)
at LaunchApplication.lambda$start$0(LaunchApplication.java:38)
DialogBoxes.java
Когда я закомментирую этот кусок кодаexitStage.initStyle (StageStyle.UNDECORATED);все в порядке, но я бы хотел, чтобы закрывающее окно не было украшено.
@FXML
private AnchorPane exitAnchorPane;
@FXML
private Button confirmExit;
@FXML
private Button confirmReturn;
@FXML
void exitConfirmation(MouseEvent event) {
exitApplication();
}
@FXML
void returnConfirmation(MouseEvent event) {
returnToApplication();
}
public static Stage exitStage = new Stage();
@FXML
public static void exitConfirmation() throws IOException{
Parent exitRoot = new FXMLLoader().load(DialogsBoxes.class.getResource("ExitBox.fxml"));
Scene exitScene = new Scene(exitRoot);
exitStage.initStyle(StageStyle.UNDECORATED);
//exitStage.initModality(Modality.WINDOW_MODAL);
//exitStage.initOwner(stage);
exitStage.setScene(exitScene);
exitStage.show();
}
public void exitApplication(){
Platform.exit();
//System.exit(0);
}
public void returnToApplication(){
exitStage.close();
}
}
LaunchApplication.java (Main Controller)
public static Stage stage = null;
@Override
public void start(Stage stage) throws IOException {
Parent root = FXMLLoader.load(getClass().getResource("LoginUI.fxml"));
Scene scene = new Scene(root);
stage.initStyle(StageStyle.UNDECORATED);
stage.setScene(scene);
this.stage = stage;
stage.show();
KeyCombination combination = new KeyCodeCombination(KeyCode.ESCAPE, KeyCodeCombination.SHIFT_ANY);
scene.setOnKeyPressed(event -> {
if(combination.match(event)){
try {
DialogsBoxes.exitConfirmation();
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
public static void main(String[] args){
launch(args);
}