2017-04-17 4 views
0

設定メニューから、ユーザーがアプリのUIの色を編集できるようにしたいと考えています。 デフォルトの色は、例えば、の.cssファイルで定義されています。例では実行時にCSSの色を上書き(編集)する方法は?

.vertex { 
    -fx-fill: rgba(64, 196, 255, 1); 
} 

私は、ユーザーが色のピックアップ]ダイアログボックスから選択しますどんなに-fxフィル色を上書きしたいの上に。実行時にCSSクラス属性を更新することは可能ですか?どうやって ?

答えて

1

あなたは、CSSファイル内のルックアップの色を使用することができます

.vertex { 
    -vertex-fill: rgba(64, 196, 255, 1); 
    -fx-fill: -vertex-fill ; 
} 

をして、あなたは、インラインスタイルを使用して、実行時にそれを変更することができます。コンポーネントの祖先でsetStyle()と呼び出すことができ、それはすべての子孫コンポーネントに適用されます。例えば。スタイルクラス.vertexで、シーン内のすべてのものに変更を適用するには、シーンのルートのスタイルを設定します。

Color selectedColor = colorPicker.getValue(); 
int red = (int) (255 * selectedColor.getRed()); 
int green = (int) (255 * selectedColor.getGreen()); 
int blue = (int) (255 * selectedColor.getBlue()); 
double opacity = selectedColor.getOpacity(); 
String userColor = String.format("rgba(%d, %d, %d, %f)", red, green, blue, opacity) ; 
scene.getRoot().setStyle("-vertex-fill: " + userColor + " ;"); 
+0

どのようにして、具体的なCSSクラスを参照してくださいか?あなたの例では、変数を.rootクラスに設定すると思います。 また、私はこの質問を明示的に質問していませんでしたが、私は答えは期待していませんが、これは色の編集にとって重要です - .cssからColorオブジェクトに変換する方法 – ievgen

+0

@ievgen外部ファイルのCSSは、 '-vertex-color'の値をCSSクラス' vertex'を持つものの塗りつぶしに適用します。 Javaコードは 'root'要素の' -vertex-color'の値を変更します。この値はルートノードのすべての子孫に適用されます。その効果は、CSSスタイルクラス 'vertex'を使ってルートノードのすべての子孫の塗りつぶしを変更することです。選択した色の文字列表現を作成するためのコードを追加しました。 –

+0

大変感謝しています! – ievgen

関連する問題