2つの画面を持つ単純なアプリケーションを作成しようとしています.1つはアプリケーションを読み込み、もう1つは入力された項目の価格をJavaとCSS(FXMLなし)で合計しますが、スプラッシュ画面には止まっています。私はこれを知っていますjavafxでprimaryStage.initStyle()を変更できないのはなぜですか?
primaryStage.initStyle(StageStyle.UNDECORATED);
このポストからウィンドウの上のボタンを取り除きます。スプラッシュ画面が閉じたら、
How to remove JavaFX stage buttons (minimize, maximize, close)
(私はそれが5秒で閉じるように設定されている)、私は、ユーザーに見えるように3つのボタンが欲しいです。だから、明らかにこれがこれです。
PauseTransition delay = new PauseTransition(Duration.seconds(5));
delay.setOnFinished(e -> {
primaryStage.setScene(mainScene);
primaryStage.initStyle(StageStyle.DECORATED);
});
delay.play();
primaryStage.show();
しかし、私はこのスタックトレースを取得:
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)
私は、アプリを開くスプラッシュ画面がちょうどN秒待つことになっていないことを知っているが、それはポイントではありません。
スタックトレースの最初の行は、「ステージが表示されたらスタイルを設定できません」ということです。なぜスタイルを変更できないのですか? JavaFXでバーと3つのボタンを追加できないのは何ですか?私もこれをやってみました
:ウィンドウを非表示に努めて
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();
を、initStyleを変更し、それを示しているが、私はもう一度同じエラーを取得します。
私の質問は、なぜ私はスタイルを変更できないのですか? JavaFXでバーと3つのボタンを追加できないのは何ですか?
ご協力いただき、ありがとうございます。
おかげさまで、あなたは私の質問に答え、頭痛の数時間を節約しました!私はいつもprimaryStageが唯一のパラメータだったので唯一の使用可能なステージだと思っていましたが、今ではそれ以上のものを使うことができます。私は今FXMLとコントローラでそれを複製できるかどうかを見ていきます。 –
2つのステージを使用して終了する場合は、スワップする必要があります。そのため、アプリはメインステージに入り、スプラッシュスクリーンはスローアウェイステージに入ります – Poundex