2016-04-22 17 views
0

私はJavaFXでアナログ時計をプログラミングしており、基本機能をダウンさせています。今、カスタムボタン(Polygonで作成された三角形)をクリックすると、ドロップダウンメニューを追加しようとしています。これまでのところ、ボタンをクリックする前か後にContextMenuを追加しようとすると、StackPaneの背景が白であるという事実を除いて、すべてうまく動作します。これまでのところ、透明性はこれまでのところうまくいっています。問題の写真がいくつかあります。JavaFXコンテキストメニューで親の透過的な背景がなくなります

これは、私は、ドロップダウンメニュー、背景の変更のためにボタンを押した後、それは(それがあるべきなあなたは、理由透明窓の私の壁紙を見ることができます。) enter image description here

どのように見えるかです。 enter image description here

+0

'ContextMenu'は、あなたが使用している唯一の' Control'サブクラスですか? (または少なくとも最初に表示するコントロールは?) –

+0

ええ、最初のコントロール、あまりにも助けてくれてありがとう!私はこれでしばらく困惑してしまった。 –

+0

何が起こっているのかについての完全な説明は私の答えを見てください。 –

答えて

1

JavaFXコントロールはCSSでスタイル付けされています。最初にコントロールを作成すると、デフォルトのユーザーエージェントスタイルシート(modena.css)がロードされ、そこに定義されているスタイルがシーングラフに適用されます。シェイプ、イメージビュー、レイアウトペインなどの他のJavaFXノードクラスでは、CSS読み込みを実行しません(これは、CSSを必要としないグラフィカルなアプリケーションのパフォーマンスを向上させるためです)。

コンテキストメニューが作成した最初のコントロールであるように、作成して表示すると、デフォルトのCSSがシーンに適用されます。ルートペインのデフォルトの背景色は不透明な色ですので、SceneStageは透過的ですが、CSSが適用されるとシーンの内容は透明になりません。

修正はルート区画のための透明度を指定することです:

root.setStyle("-fx-background-color: transparent;"); 

または外部スタイルシートで同等。

0

自分の質問に答えるために誰が知りたい場合には、のContextMenuがシーンに追加されたときに、ステージのinitStyle(StageStyle.TRANSPARENT)が上書きさと親の色を示していますようです。私はルートのCSSスタイルを初期化していないので、単に白く見えました。 ( " - FX-背景色:RGBA(0、0、0、0.0)")

//親レイアウトペイン

parent.setStyle:修正をするであろう。

関連する問題