Подтвердить что ты не робот

Как создать заставку с прозрачным фоном в JavaFX

Я пытаюсь создать заставку, подобную примеру, который я использовал. Кажется, что AnchorPane не допускает прозрачный фон, я пробовал установить css AnchorPane на -fx-background-color: rgba(255,0,255,0.1) ;, но белый фон все еще отображается.

Все, что у меня есть в моем файле fxml, это AnchorPane с ImageView с содержимым png image

Example

Я смотрел повсюду, но не нашел решения, любая помощь будет оценена. Благодаря

4b9b3361

Ответ 1

Попробуйте образец всплеска JavaFX, созданный для вопроса Stackoverflow: Проектирование заставки (java ). И отслеживать образец, который также обеспечивает обратную связь с выполнением инициализации приложения.

JavaFX предлагает Preloader интерфейс для плавной передачи от всплеска к приложению, но приведенные выше примеры не используют его.

Образцы всплесков выше также не выполняют прозрачный эффект, но этот диалог показывает вам, как это сделать, и вы можете комбинировать он с предыдущими образцами всплеска, чтобы получить необходимый эффект.

Прозрачный эффект создается:

  • stage.initStyle(StageStyle.TRANSPARENT).
  • scene.setFill(Color.TRANSPARENT).
  • Обеспечение вашего корня node не является непрозрачным прямоугольным прямоугольником.

Это все продемонстрировано в примере Сергея.

Похожие вопросы:

Обновление Apr 2016 на основе дополнительных вопросов

изображение предварительного натяжения не находится на переднем плане. Я пробовал stage.toFront(), но не помогает.

В Java 8u20 был создан новый API stage.setAlwaysOnTop(true). Я обновил связанный образец, чтобы использовать его на начальном всплывающем экране, что помогает более плавно переходить на главный экран.

Ответ 2

Для этого нужно иметь прозрачные Stage и Scene. Pane сам не имеет цвета.

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://javafx-jira.kenai.com/browse/RT-38938
    // "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();
}