Ich versuche, eine einfache App zu machen, die 2 Bildschirme hat, eine, die die App lädt, eine, die die Preise der eingegebenen Elemente mit nur Java und CSS (keine FXML) summiert, aber ich bin auf dem Begrüßungsbildschirm stecken. Ich weiß, dass dieseWas verhindert die Änderung von primaryStage.initStyle() in javafx?
primaryStage.initStyle(StageStyle.UNDECORATED);
von diesem Beitrag die Tasten oben auf dem Fenster loswird.
How to remove JavaFX stage buttons (minimize, maximize, close)
Sobald der Begrüßungsbildschirm schließt (ich habe es in 5 Sekunden gesetzt, um zu schließen), möchte ich die 3 Tasten für den Benutzer sichtbar sein. Es wäre also naheliegend, dies zu tun.
PauseTransition delay = new PauseTransition(Duration.seconds(5));
delay.setOnFinished(e -> {
primaryStage.setScene(mainScene);
primaryStage.initStyle(StageStyle.DECORATED);
});
delay.play();
primaryStage.show();
Aber ich bekomme diesen Stack-Trace:
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 splash.SplashScreen.lambda$0(SplashScreen.java:42)
at javafx.animation.Animation.impl_finished(Animation.java:1132)
at javafx.animation.AnimationAccessorImpl.finished(AnimationAccessorImpl.java:49)
at com.sun.scenario.animation.shared.SingleLoopClipEnvelope.timePulse(SingleLoopClipEnvelope.java:103)
at javafx.animation.Animation.impl_timePulse(Animation.java:1102)
at javafx.animation.Animation$1.lambda$timePulse$25(Animation.java:186)
at java.security.AccessController.doPrivileged(Native Method)
at javafx.animation.Animation$1.timePulse(Animation.java:185)
at com.sun.scenario.animation.AbstractMasterTimer.timePulseImpl(AbstractMasterTimer.java:344)
at com.sun.scenario.animation.AbstractMasterTimer$MainLoop.run(AbstractMasterTimer.java:267)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:506)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:490)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$404(QuantumToolkit.java:319)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
Ich weiß, dass ein Splash-Screen nicht nur soll n Sekunden warten, dann die App öffnen, aber das ist nicht der Punkt.
Was mir am meisten auffällt, ist die erste Zeile des Stack-Trace: "Style kann nicht eingestellt werden, nachdem die Stufe sichtbar gemacht wurde". Warum kann ich den Stil nicht ändern? Was verhindert, dass JavaFX eine Bar und 3 Tasten hinzufügt?
Ich habe auch schon versucht, diese zu tun:
PauseTransition delay = new PauseTransition(Duration.seconds(5));
delay.setOnFinished(e -> {
primaryStage.hide();
primaryStage.setScene(mainScene);
primaryStage.initStyle(StageStyle.DECORATED);
primaryStage.show();
});
delay.play();
primaryStage.show();
in dem Bemühen um das Fenster zu verstecken, die initStyle ändern, dann zeigen, aber ich bekomme den gleichen Fehler noch einmal.
Also noch einmal, meine Frage ist, warum kann ich den Stil nicht ändern? Was verhindert, dass JavaFX eine Bar und 3 Tasten hinzufügt?
Ich bin dankbar für jede Hilfe.
Haha danke, du hast meine Frage beantwortet UND mir Kopfschmerzen erspart! Ich dachte immer, dass primaryStage die einzige verwendbare Stufe ist, da es der einzige Parameter ist, aber jetzt weiß ich, dass ich mehr als diese eine Stufe verwenden kann. Ich werde jetzt sehen, ob ich es mit FXML und einem Controller replizieren kann. –
Wenn du zwei Stufen verwendest, solltest du sie tauschen, damit deine App in die erste Stufe geht und der Begrüßungsbildschirm in die Wegwerfphase geht – Poundex