Come creare la schermata Splash con sfondo trasparente in JavaFX

Sto cercando di creare una schermata iniziale come nell’esempio che ho provato. Sembra che AnchorPane non consenta lo sfondo trasparente, ho provato a impostare il css di AnchorPane su -fx-background-color: rgba(255,0,255,0.1) ; ma lo sfondo bianco appare ancora.

Tutto ciò che ho nel mio file fxml è un AnchorPane con ImageView che contiene l’immagine png

Esempio

Ho cercato ovunque ma non riesco a trovare alcuna soluzione, qualsiasi aiuto sarebbe apprezzato. Grazie

    Prova questo esempio di splash JavaFX creato per la domanda StackOverflow: Progettazione di una schermata iniziale (java) . E un esempio di follow-up che fornisce anche feedback sull’avanzamento dell’inizializzazione dell’applicazione.

    JavaFX offre l’interfaccia Preloader per un trasferimento fluido da splash a application, ma gli esempi sopra non ne fanno uso.

    Anche gli splash precedenti non fanno l’effetto trasparente, ma questo esempio mostra come farlo e puoi combinarlo con i precedenti splash per ottenere l’effetto desiderato.

    L’effetto trasparente è creato da:

    1. stage.initStyle(StageStyle.TRANSPARENT) .
    2. scene.setFill(Color.TRANSPARENT) .
    3. Garantire che il nodo radice non sia un rettangolo quadrato opaco.

    Che è tutto dimostrato nel campione di Sergey.

    Domanda relativa:

    • Come usare javaFX Preloader con l’applicazione standalone in Eclipse?

    Aggiornamento aprile 2016 basato su ulteriori domande

    l’immagine del preloader non è in primo piano. Ho provato stage.toFront (), ma non aiuta.

    Una nuova API è stata creata in Java 8u20 stage.setAlwaysOnTop (true) . Ho aggiornato l’ esempio collegato per utilizzarlo nella schermata iniziale iniziale, che aiuta a facilitare la transizione verso la schermata principale.

    Per Java8 +

    Per modena.css (la definizione predefinita di look and feel JavaFX in Java 8), è stato introdotto un leggero sfondo ombreggiato per tutti i controlli (e anche per i riquadri se è caricato un controllo).

    Puoi rimuoverlo specificando che lo sfondo predefinito è trasparente. Questo può essere fatto aggiungendo la seguente riga al file CSS della tua applicazione:

     .root { -fx-background-color: transparent; } 

    Se lo desideri, puoi utilizzare le classi e le regole di stile CSS o una chiamata setStyle (come dimostrato nella risposta di Sergey) per garantire che l’impostazione si applichi solo alla radice della schermata iniziale piuttosto che a tutte le schermate dell’app.

    Vedi correlati:

    • come rendere trasparente la scena e il palcoscenico in javafx?

    Devi avere Stage e Scene trasparenti per questo. Pane stesso non ha un colore.

     public void start(Stage primaryStage) { Button btn = new Button("Say 'Hello World'"); AnchorPane root = new AnchorPane(); root.getChildren().add(btn); // Java 8: requires setting the layout pane background style to transparent // https://bugs.openjdk.java.net/browse/JDK-8092764 // "Modena uses a non-transparent background by default" root.setStyle("-fx-background-color: transparent;"); Scene scene = new Scene(root, 300, 250, Color.TRANSPARENT); primaryStage.initStyle(StageStyle.TRANSPARENT); primaryStage.setScene(scene); primaryStage.show(); }