How to use CSS in JavaFX Part 5
前回までで 基本的な使い方を 大体 おさえましたが...
今回も懲りずに JavaFX で CSS...
How to use CSS in JavaFX でも紹介しましたが...
JavaFX では Node 以外にも Control の Skin の変数も CSS プロパティとして設定できるのです。
Control の Skin とは TextBox や Button 等の Control を表示するための Node を生成するためのクラスです。
実は Control の Skin のスタイルが設定できるというのが JavaFX で CSS を利用するメリットの一つでもあるのです。
カスタム Control を作ったことのある方であれば わかると思いますが...
スタイルのための変数を 実際にその変数を利用する Skin に定義できることは
- コードがシンプルになり保守性が向上する
- Control の変数が機能的なものだけにできる
- Control を変更することなく、見た目が変更できる
と言うことで...
早速 Control の見た目を CSS で変更してみましょう。
今回は Button の見た目を変更してみましたが、もちろん、他の Control でも可能です。
ただし、設定できるプロパティは それぞれ異なります。
LinearGradient してみる。
"javafx.scene.control.Button" { border-fill: linear (0%, 0%) to (0%, 100%) stops (0.00, #555555), (0.40, #000000), (0.60, #000000), (1.00, #555555); fill: linear (0%, 0%) to (0%, 100%) stops (0.00, #555555), (0.40, #000000), (0.60, #000000), (1.00, #555555); highlight-fill: linear (0%, 0%) to (0%, 100%) stops (0.00, #555555), (0.40, #000000), (0.60, #000000), (1.00, #555555); }
ボタンを丸くしてみる。
"javafx.scene.control.Button" { base: black; corner-radius: 20.0; width: 20.0; height: 20.0; }
丸ボタンに RadialGradient してみる。
"javafx.scene.control.Rectangle" { corner-radius: 20.0; width: 20.0; height: 20.0; border-fill: radial (0%, 0%) , 100% focus(25%, 25%) stops (0.00, skyblue), (1.00, blue); fill: radial (0%, 0%) , 100% focus(25%, 25%) stops (0.00, skyblue), (1.00, blue); highlight-fill: radial (0%, 0%) , 100% focus(25%, 25%) stops (0.00, skyblue), (1.00, blue); }
Button の API を見てもらえば分かりますが、Button 自体には スタイルを設定するための変数はほとんどありません。
しかし、CSS を使えば、ここまで Button の見た目を変えられるのです。
しかも、コードを変更することなく...
このサンプルを通して、少しでも CSS の良さが伝われば幸いです。