回答編集履歴
2
removeは冗長なので削除
test
CHANGED
@@ -64,7 +64,7 @@
|
|
64
64
|
|
65
65
|
public void add(Node child, SW constraint) {
|
66
66
|
|
67
|
-
getChildren().remove(child);
|
67
|
+
//getChildren().remove(child);//冗長でした。
|
68
68
|
|
69
69
|
getChildren().add(child);
|
70
70
|
|
1
不正確な記述を訂正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
StackPane, Group
|
1
|
+
StackPane, Groupなどいくつか方法がありますね。どちらを用いても大差ないですが、以下切り替え方法について少しコメントします。
|
2
2
|
|
3
3
|
|
4
4
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
StackPane
|
17
|
+
StackPane/Groupともに(A)の特徴をもってますが、(B)(C)は自前で行う必要があります。
|
18
18
|
|
19
19
|
|
20
20
|
|
@@ -22,11 +22,11 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
-
さてStackPaneの(A)の目的はどちらかといえば複数の子供を深度(子供を配置した順番)に応じて同時に表示するためという意味合いですので、深度を切り替えるだけでは(B)が確実に行えません。透明な背景を持つような子供があると奥にある別の子供が見えちゃいます。
|
25
|
+
さてStackPane/Groupの(A)の目的はどちらかといえば複数の子供を深度(子供を配置した順番)に応じて同時に表示するためという意味合いですので、深度を切り替えるだけでは(B)が確実に行えません。透明な背景を持つような子供があると奥にある別の子供が見えちゃいます。
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
そこで(B)(C)は「表示対象の子供以外をinvisibleにするという方針がよいと思います。若干めんどくさく感じるかも知れませんが、JavaFXのプロパティーとbindを用いるとそう面倒でもありません。
|
29
|
+
そこで(B)(C)は「表示対象の子供以外をinvisibleにするという方針がよいと思います。若干めんどくさく感じるかも知れませんが、JavaFXのプロパティーとbindを用いるとそう面倒でもありません。CardLayoutでいうconstraintsをJavaFXプロパティーとして定義し、その値に応じて自動的に各々の子供のvisibleプロパティーを変化するようにbindしてやればよいです。
|
30
30
|
|
31
31
|
|
32
32
|
|
@@ -67,6 +67,8 @@
|
|
67
67
|
getChildren().remove(child);
|
68
68
|
|
69
69
|
getChildren().add(child);
|
70
|
+
|
71
|
+
// constraintプロパティーの値が引数に指定したものと等しい場合のみvisibleにする
|
70
72
|
|
71
73
|
child.visibleProperty().bind(constraintsProperty().isEqualTo(constraint));
|
72
74
|
|