回答編集履歴
1
訂正
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
②入力値によってbaseの色を変更する。
|
11
11
|
|
12
12
|
これは動的に変化する「状態」なので質問者さんがお考えのpseudoclassとして制御するのが適切だろうと思います。外観パターンが増えていくほど複雑になるというのはおっしゃるとおりですが、①で述べたような方法で動的な状態による外観とそれ以外の静的に決まる外観をきちんと区別することでパターンは最小限にできるのではないでしょうか。
|
13
|
-
それはそれとして自分も同様に
|
13
|
+
それはそれとして自分も同様にpseudo classをまじめに制御しようとして悩んだことがあります。それは`getStyleClass#add`する際に必ず相反する状態を`getStyleClass#remove`しないといけない点です。これはいちいちやるのは面倒なので例えばあり得る状態をenumで定義してやって状態を変更するようなメソッドで自動的にremoveしてくれるようにするといった工夫ができるかも知れません。
|
14
14
|
|
15
15
|
```java
|
16
16
|
enum TextState {
|
@@ -28,4 +28,9 @@
|
|
28
28
|
// あらたな状態を設定する
|
29
29
|
styleClass.add(newState.toString());
|
30
30
|
}
|
31
|
-
```
|
31
|
+
```
|
32
|
+
|
33
|
+
---
|
34
|
+
訂正:
|
35
|
+
時間がたってからのコメントで恐縮ですが内容におかしな点があることに気づきました。疑似クラス(pseudo class)の制御をgetStyleClassでやるとコメントしましたがこれは変ですね。JavaFX 8からの機能に文字通りPsudoClassというのがありこちらを使ってやるべきだと思います。getStyleClassで表現するのは文字通りstyle classであってこちらは動的に変えるようなものではないと思います。PsudoClassを使うと疑似クラスのON/OFFはもっと単純に変更できました。
|
36
|
+
失礼しました。
|