2016-10-11 4 views
0

これまで、私のようなサイズを管理するために、最終的な変数を使用しました:JavaFX - サイズのCSS変数?私のJavaFXのプログラムで

final int SCENE_WIDTH = 500, SCENE_HEIGHT = 600, 
ROOT_WIDTH = (int)(SCENE_WIDTH * 0.8), ROOT_HEIGHT = (int)(SCENE_HEIGHT * 0.8); 

しかし、人々はそれがGUI関連のサイズ、色、効果を持っているのがベストだと私に言ってきた、などすべてのことにCSSファイルに保存します。

私のCSSファイルでは、変数を作成して他の変数に基づいて更新することはできないと思います。私は上記のCSSをどのように達成するでしょうか?どちらの方法が最も理にかなっていますか?

答えて

1

このような計算は現在、CSS 3の実験的な技術です(https://developer.mozilla.org/en/docs/Web/CSS/calc参照)。 JavaFX CSSはCSS 2.1に基づいています。

サイズの乗算はスケールプロパティを使用してのみ可能です。これは、計算結果に優先サイズを設定するのとは少し異なります。

@Override 
public void start(Stage primaryStage) { 
    Button btn = new Button("Say 'Hello World'"); 
    btn.setOnAction((ActionEvent event) -> { 
     System.out.println("Hello World!"); 
    }); 

    StackPane root = new StackPane(); 
    root.setId("root"); 
    root.getChildren().add(btn); 

    Scene scene = new Scene(root); 
    scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm()); 

    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
* { 
    -fx-scene-width: 500; 
    -fx-scene-height: 600; 
} 

#root { 
    -fx-pref-width: -fx-scene-width; 
    -fx-pref-height: -fx-scene-height; 
} 

.button { 
    -fx-pref-width: -fx-scene-width; 
    -fx-pref-height: -fx-scene-height; 
    -fx-scale-x: 0.8; 
    -fx-scale-y: 0.8; 
} 

シーンのサイズとは異なるサイズに根のサイズを設定しようとする試みがSceneがルートのサイズに設定されますから、少し無意味であると思われることに注意してくださいルートNodeに指定された制約に関係なく、独自のサイズです。


CSSは、JavaFXでシーンのスタイリングを行う優れた方法ですが、いくつかの制限があります。しかし、CSS を使用すると、コードからいくつかの値を設定/バインドできます。

+0

"CSSはJavaFXでシーンをスタイリングするのに適していますが、いくつかの制限がありますが、CSSを使用してコードから一部の値を設定/バインドすることはできます。これについて詳しく説明できますか?ありがとうございました。 – Hatefiend

+0

@Hatefiend特にどの部分ですか?コードからいくつかのプロパティを割り当てる可能性とCSSからいくつかのプロパティを割り当てる可能性?例えば、 'Rectangle.width'のような静的プロパティやプロパティを割り当てたり、ほとんどの型の値を計算したり、兄弟/子番号セレクタのようなセレクタがJavaFXに実装されていないことはありませんか? – fabian