23

私が提供した例のようなスプラッシュ画面を作成しようとしています。AnchorPane は透明な背景を許可していないようです。to の css を設定しようとしましAnchorPane-fx-background-color: rgba(255,0,255,0.1) ;が、白い背景がまだ表示されます。

私のfxmlファイルにあるのは、png画像を含むImageViewを持つAnchorPaneだけです

例

私はいたるところを見てきましたが、解決策が見つかりません。助けていただければ幸いです。ありがとう

4

2 に答える 2

26

Stackoverflow の質問用に作成されたこのJavaFX スプラッシュ サンプルを試してください:スプラッシュ スクリーンの設計 (java)。また、アプリケーションの初期化の進行状況のフィードバックも提供 するフォローアップ サンプル。

JavaFX は、スプラッシュからアプリケーションへのスムーズな転送のためにPreloaderインターフェースを提供しますが、上記のサンプルではそれを利用していません。

上記のスプラッシュ サンプルも透過効果を行いませんが、このダイアログ サンプルはその方法を示しており、前のスプラッシュ サンプルと組み合わせて必要な効果を得ることができます。

透明効果は次の方法で作成されます。

  1. stage.initStyle(StageStyle.TRANSPARENT).
  2. scene.setFill(Color.TRANSPARENT).
  3. ルート ノードが不透明な四角形でないことを確認します。

これはすべて、Sergey のサンプルで実証されています。

関連する質問:

追加の質問に基づいて 2016 年 4 月に更新

プリローダーの画像はフォアグラウンドにありません。stage.toFront() を試しましたが、役に立ちません。

Java 8u20 stage.setAlwaysOnTop(true)で新しい API が作成されました。リンクされたサンプルを更新して、最初のスプラッシュ画面でこれを使用するようにしました。これにより、メイン画面への移行がスムーズになります。

Java8+ の場合

modena.css (Java 8 のデフォルトの JavaFX ルック アンド フィール定義) では、すべてのコントロール (およびコントロールが読み込まれている場合はペイン) に、わずかに影付きの背景が導入されました。

これを削除するには、デフォルトの背景を透明に指定します。これは、アプリケーションの CSS ファイルに次の行を追加することで実行できます。

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

必要に応じて、CSS スタイル クラスとルール、または setStyle 呼び出し (Sergey の回答に示されているように) を使用して、設定がすべてのアプリ画面ではなくスプラッシュ画面のルートにのみ適用されるようにすることができます。

関連参照:

于 2013-02-20T06:41:06.620 に答える
14

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://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();
}
于 2013-02-20T04:57:13.410 に答える