2

2 つのアンカー ペインで構成されるウィンドウを作成したいと思います。

ルート アンカー ペインの背景画像を設定し、その上に 2 番目の画像を配置したいと思います。したがって、プレビューが次のように見えるはずです。ルートアンカーペインの背景画像の端にフレームとして囲まれた空白(2番目のアンカーペイン)。しかし、テストを行うと背景画像全体を見ることができるため、2 番目のアンカー ペインは透明に見えます。

不透明度などは設定されていません...

(たとえば、分割面は透明ではないため、これはわかりません...これらのペインと分割ペインはいくつかの品質の点で同じではないことを理解し始めましたが、その理由はわかりませんそれはそうです。)

前者の問題を解決するためのベストプラクティスは何だと思いますか? ありがとうございました!

4

1 に答える 1

6

Paneサブクラスはデフォルトで透過的です。Controlサブクラスはデフォルトの CSS スタイルシートによってスタイル設定されるため、背景色はスタイルによって決定されます。SplitPaneはコントロールであるため、その背景色はデフォルトの CSS スタイルシートによって決定されます。これにより、背景色がルックアップされた色-fx-background(行 611) に設定されます。これは、デフォルトで、ベース カラー ( ) のより暗いバージョン (強度 26.4%、行 102) になり#ecececます。

アンカー ペインの背景を変更する最良の方法は、外部 css ファイルを使用することです。(これは、アプリケーションのスタイル/外観を実際のアプリケーション コードから分離できることを意味します。) アンカー ペインに ID を追加します。

AnchorPane maskingPane = new AnchorPane();
maskingPane.setId("masking-pane");

そして、外部CSSファイルで、次のことができます

#masking-pane {
    -fx-background-color: white ;
}

または、分割ペインと同じ色を取得する場合:

#masking-pane {
    -fx-background-color: -fx-background ;
}

id一意である必要があります。同じ色にしたいペインが複数ある場合は、代わりにスタイル クラスをそれらに追加できます。

AnchorPane maskingPane = new AnchorPane();
maskingPane.getStyleClass().add("masking-pane");

そしてCSSは次のようになります

.masking-pane {
    -fx-background-color: white ;
}

Oracle JavaFX チュートリアルには、CSS を使用したアプリケーションのスタイリングに関するセクションがあります。

于 2015-02-27T02:34:44.657 に答える