Prova questa JavaFX splash sample creato per la domanda StackOverflow: Designing a splash screen (java). E uno follow up sample che fornisce anche feedback sull'avanzamento dell'inizializzazione dell'applicazione.
JavaFX offre l'interfaccia Preloader per un trasferimento fluido da splash all'applicazione, ma gli esempi sopra non ne fanno uso.
Anche gli esempi di splash sopra non fanno l'effetto trasparente, ma questo dialog sample mostra come farlo e puoi combinarlo con i precedenti campioni di splash per ottenere l'effetto desiderato.
L'effetto trasparenza viene creato da:
stage.initStyle(StageStyle.TRANSPARENT)
.
scene.setFill(Color.TRANSPARENT)
.
- Assicurarsi che il nodo radice non sia un rettangolo quadrato opaco.
Che è tutto dimostrato nel campione di Sergey.
questione connessa:
Aggiornamento Apr 2016 sulla base di ulteriori domande
il preloader immagine isnt in primo piano. Ho provato stage.toFront(), ma non aiuta.
Una nuova API è stata creata in Java 8u20 stage.setAlwaysOnTop(true). Ho aggiornato linked sample per utilizzarlo nella schermata iniziale iniziale, che aiuta a facilitare una transizione più graduale alla schermata principale.
Per Java8 +
Per modena.css (il default JavaFX look and feel definizione in Java 8), un leggero sfondo ombreggiato è stato introdotto per tutti i controlli (e anche di vetri se un controllo viene caricato).
È possibile rimuovere questo specificando che lo sfondo predefinito è trasparente. Questo può essere fatto aggiungendo la seguente riga al file CSS dell'applicazione:
.root { -fx-background-color: transparent; }
Se lo si desidera, è possibile utilizzare le classi di stile CSS e regole o una chiamata setStyle (come dimostrato nella risposta di Sergey) per assicurare che l'impostazione si applica solo alla radice della schermata iniziale anziché a tutte le schermate dell'app.
Vedi correlato:
+1 per aver menzionato Preloader – Puce
Grazie ragazzi! Entrambe le risposte sono buone ma 'scene.setFill (Color.TRANSPARENT) .' Non è necessario specificare la larghezza e l'altezza della scena – francisOpt
Si è verificato un colpo di milisecondo con lo sfondo visibile quando è stata mostrata la scena. Sono riuscito a risolvere questo problema chiamando: 'root.setCache (true); root.setCacheHint (CacheHint.SPEED); '_ (dove root è l'istanza Parent) _. – stuchl4n3k