2016-09-12 7 views
1

私は単純なJavaFXプロジェクトで次のような問題を抱えています。 NetBeansでは簡単なFXMLプロジェクトを作成しました。これは、FXMLファイルラベルのJava FXの色を忘れました

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1280.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sensordemo.MainController"> 
    <children> 
     <VBox blendMode="COLOR_DODGE" layoutX="14.0" layoutY="12.0" prefHeight="453.0" prefWidth="169.0"> 
     <children> 
      <VBox prefHeight="147.0" prefWidth="109.0"> 
       <children> 
        <Label text="XXXXX" textFill="#8c5123"> 
        <font> 
         <Font name="Arial Bold Italic" size="18.0" /> 
        </font> 
        </Label> 
       </children> 
      </VBox> 
      <VBox prefHeight="134.0" prefWidth="83.0"> 
       <children> 
        <Label text="YYYYY" textFill="#23288d"> 
        <font> 
         <Font name="Arial Bold Italic" size="18.0" /> 
        </font></Label> 
       </children> 
      </VBox> 
      <VBox prefHeight="167.0" prefWidth="83.0"> 
       <children> 
        <Label text="ZZZZZ" textFill="#23288d"> 
        <font> 
         <Font name="Arial Bold Italic" size="18.0" /> 
        </font> 
        </Label> 
       </children> 
      </VBox> 
     </children> 
     </VBox> 

    </children> 
</AnchorPane> 

正しく正しくFXシーンビルダーに表示されているラベルの色が含まれていますが、私はシーンビルダーのプレビュー機能を使用している場合、ラベルの間違った色を参照してくださいです。グレーのバックエンドに白いフォントが表示されます。私がこのシンプルなプロジェクトのビルドを作成した場合、私は同じ間違った色を見ます。この問題の理由は何ですか?私には正しい色の定義がビルドに含まれていないようです。 Iは

  1. Netbeansの8.1
  2. のJava SDK 8の64ビットを使用します。
  3. のWindows 7 64ビット

事前

+0

何I予想される出力は? SceneBuilderでは何も表示されません。これは期待されていますか?予想される背景色は何ですか? – fabian

+0

期待される出力が最初のケースです。私は、白い背景に赤いフォントを見たいと思っています。他の場合には、私は白い背景に青いフォントを見たいと思います。私がアプリケーションを起動するとき、灰色の背景にフォントをseewhiteします。期待される出力は – Alexander

+0

ですVBOXの背景を変更するためのCSSはありますか?どのように変更する予定ですか? – GOXR3PLUS

答えて

1

に期待される結果が取得するいくつかの方法をありがとう:あなたは、これが推奨され、そのスタイルを維持する場合は

〜> 1)

SceneViewerで、手動で各VBoxまたはLabelの背景色をインラインCSSを使用して追加します。

-fx-background-color:white; 

〜> 2)ベストプラクティス

それぞれのVBoxにstyleClassの追加またはSceneViewerを通じてラベルやアプリケーションの外部CSSファイルを使用します。

.styleClassName { 

     -fx-background-color:white; 

    } 

〜 > 3)

あなたはそれぞれのVBoxの一意のIDを追加したり、あなたが持っているラベルと使用してJavaコードに自分のスタイルを変更することができます。

elementID.setStyle(" -fx-background-color:white; "); 

がいることを言及: ほとんどのJavaFXのレイアウトのデフォルトの背景色はグレーのようなものですので、あなたにそれを変更する必要があります。

2

何とかSceneBuilderがエフェクトを間違えています。

あなたはBlendMode.COLOR_DODGEを使用しています。

のJavadocから:

底入力色成分が得られた色を生成するために上部入力色成分の逆数で割ます。したがって、背景色成分B及び文字色成分Tを出力Pの成分は

P = min(B/(1 - T), 1) 

(ここで範囲[0, 1]内のコンポーネント)の

なしとして計算される所与

Labelテキストの色に使用する色の色成分が0.13より暗いので、B/(1 - T) >= B/0.87これは、コンポーネントが(0.87, 0.87, 0.87)以上で背景色がすべて白色であることを意味します。これは、JavaFXシーンのデフォルトの背景の場合です。だから白は期待される色です。

たぶん、あなたは、テキストの色を見るために、異なるblendModeを使用するか、暗い何かにAnchorPane背景を変更する必要があります。

<AnchorPane style="-fx-background-color: #888;" ... 

私の推測では、あなたがにblendMode異なるを必要としないということですデフォルト(SRC_OVER)が、ちょうどAnchorPaneの背景を調整する必要があります。

<AnchorPane style="-fx-background-color: white;" id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1280.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1"> 
    <children> 
     <VBox layoutX="14.0" layoutY="12.0" prefHeight="453.0" prefWidth="169.0"> 
     ... 
     </VBox> 
    </children> 
</AnchorPane> 
関連する問題