배경/컨텍스트 :자바 FX -/레이아웃에서 부모와 모든 자식을 포함, 제외 동적
나는 부모와 많은 자식 노드 (버튼, TextField의, 레이블 ...)와 같은 HBox의가 있습니다. HBox 수는
내 질문에 다른 컨테이너 (BorderPane/중 VBOX/그리드)의 자식 :
어떻게 동적으로 부모 (HBox의)와 레이아웃의 모든 아이를 제외/제거 할 수 있습니까?
내가 (마이크로 소프트 WPF처럼) 노드에 대한 몇 가지 3 상 특성을 찾고 :
보이는 - 가시와을 축소 레이아웃
에 참여 - 보이지 않고 참여하지 않습니다 레이아웃에
숨겨진이 (뿐만 아니라 그 아이에 적용) - 표시되지 않지만 레이아웃에 참여
http://msdn.microsoft.com/en-us/library/ms590101.aspx
JavaFX는 어떤 옵션을 제공합니까?
내 솔루션 지금까지 :
hBox.setManaged(false);
- 에만 HBox의이 작품은, 그 아이는 여전히 존재
root.getChildren() (hBoxTop)를 제거;.
root.getChildren(). add (hBoxTop);
- 음이 일할 수있는 것처럼,이 .. 보이지만 BorderPane되는 루트의 경우, 예를 들어, 내가 제거하면/추가하고 사용되지 않는 남아 후 HBox의를, 공간을 제거합니다. 이미 requestLayout()을 시도했지만 ID가 thr rrot을 채우지 않습니다. 내가 놓친 게 있니? 이 문제에 대한 올바른 접근 방법입니까?
편집 :
글쎄, 나는이 작업을 얻었다.
동적으로 제거하고이 특정 사건에 대한 추가에 의해 달성 될 수있다 :
제거 :
root.setTop(null);
추가 :
root.setTop(hBoxTop);
것은 내가 (셋톱 호출하지 않았다 null), BorderPane는 여전히 HBox의 스페이스를 예약합니다 (아이를 삭제 한 후에도). en).
IMHO : 부모 컨테이너 고유이므로 매우 좋지 않은 모델입니다. 예를 들어, BorderPane을 VBox로 변경하면 이러한 메서드도 변경해야합니다. VBox의 경우 children 컬렉션 작업을 제거/추가하지만 add를 호출 한 후 HBox가 같은 위치에 나타나도록 인덱스를 기억해야합니다.