回答編集履歴

2

removeは冗長なので削除

2018/04/02 02:56

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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

不正確な記述を訂正

2018/04/02 02:56

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

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(A)の特徴をもってますが、(B)(C)は自前で行う必要があります。
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