Cómo crear una pantalla Splash con fondo transparente en JavaFX

Intento crear una pantalla de presentación como el ejemplo que he proporcionado. Parece que AnchorPane no permite fondo transparente, he intentado configurar el css de AnchorPane en -fx-background-color: rgba(255,0,255,0.1) ; pero el fondo blanco todavía aparece.

Todo lo que tengo en mi archivo fxml es un AnchorPane con ImageView que contiene la imagen png

Ejemplo

He buscado en todas partes pero no encuentro ninguna solución, cualquier ayuda sería apreciada. Gracias

    Pruebe esta muestra de splash JavaFX creada para la pregunta Stackoverflow: Diseñando una pantalla de inicio (java) . Y una muestra de seguimiento que también proporciona comentarios sobre el progreso de la inicialización de la aplicación.

    JavaFX ofrece la interfaz Preloader para una transferencia fluida desde splash a la aplicación, pero las muestras anteriores no la utilizan.

    Las muestras de bienvenida anteriores tampoco tienen el efecto transparente, pero este ejemplo de diálogo muestra cómo hacerlo y puede combinarlo con las muestras de salpicaduras anteriores para obtener el efecto que desea.

    El efecto transparente es creado por:

    1. stage.initStyle(StageStyle.TRANSPARENT) .
    2. scene.setFill(Color.TRANSPARENT) .
    3. Garantizar que su nodo raíz no es un rectángulo cuadrado opaco.

    Lo cual está demostrado en la muestra de Sergey.

    Pregunta relacionada:

    • ¿Cómo usar el preloader de javaFX con una aplicación independiente en Eclipse?

    Actualización abril de 2016 basada en preguntas adicionales

    la imagen del precargador no está en primer plano. He intentado stage.toFront (), pero no ayuda.

    Se creó una nueva API en Java 8u20 stage.setAlwaysOnTop (true) . Actualicé la muestra vinculada para usar esto en la pantalla inicial, lo que ayuda a facilitar una transición a la pantalla principal.

    Para Java8 +

    Para modena.css (la definición de apariencia JavaFX predeterminada en Java 8), se introdujo un fondo ligeramente sombreado para todos los controles (y también para los paneles si se carga un control).

    Puede eliminar esto especificando que el fondo predeterminado es transparente. Esto se puede hacer agregando la siguiente línea al archivo CSS de su aplicación:

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

    Si lo desea, puede usar clases y reglas de estilo CSS o una llamada setStyle (como se demostró en la respuesta de Sergey) para asegurarse de que la configuración solo se aplique a la raíz de la pantalla de bienvenida en lugar de a todas las pantallas de la aplicación.

    Ver relacionado

    • cómo hacer una escena y escenario transparentes en javafx?

    Necesita tener Stage y Scene transparentes para eso. Pane propio Pane no tiene un color.

     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(); }