Layout JavaFX–;从布局中动态排除/包括父级及其所有子级
背景/背景:Layout JavaFX–;从布局中动态排除/包括父级及其所有子级,layout,parent,javafx,Layout,Parent,Javafx,背景/背景: hBox.setManaged(false); 我有一个HBox作为父节点和许多子节点(按钮、文本字段、标签…)。HBox是其他容器(BorderPane/VBox/Grid)的子容器 我的问题: hBox.setManaged(false); 如何从布局中动态删除/排除父级(HBox)及其所有子级 我正在查找节点上的一些三状态属性(如Microsoft WPF): 可见–可见并参与布局 折叠–不可见且不参与布局(也适用于其子级) 隐藏–不可见,但参与布局 J
hBox.setManaged(false);
我有一个HBox作为父节点和许多子节点(按钮、文本字段、标签…)。HBox是其他容器(BorderPane/VBox/Grid)的子容器
我的问题:
hBox.setManaged(false);
如何从布局中动态删除/排除父级(HBox)及其所有子级
我正在查找节点上的一些三状态属性(如Microsoft WPF):
可见–可见并参与布局
折叠–不可见且不参与布局(也适用于其子级)
隐藏–不可见,但参与布局
JavaFX提供了哪些选项
我目前的解决方案:
hBox.setManaged(false);
- 这项工作只针对HBox,其子公司仍然存在
- 好吧,这看起来可以工作..,但例如,在根为BorderPane的情况下,一旦我删除/添加并删除HBox,它之后的空间将保持未使用状态。我已经尝试了requestLayout(),但id不会强制thr-rrot填充它。我错过什么了吗?这是解决这个问题的正确方法吗
hBox.setManaged(false);
好吧,我让它工作了
可通过以下方式实现此特定情况下的动态删除和添加:
删除:
加:
当我在删除时没有调用setTop(null)时,BorderPane仍然为HBox保留空间(即使在从其子项删除之后)
IMHO:它不是很好的模型,因为它是特定于父容器的。例如,如果我将BorderPane更改为VBox a,我也必须更改这些方法。对于VBox,remove/add-on children集合可以工作,但我需要记住索引,以便HBox在调用add后显示在相同的位置。使用root.setTop(null)
不是一个好主意,因为正如您所说,它是特定于BorderPane的
我认为最好的解决方案是使用:
root.getChildren().remove(yourPane);
并使用布局方法来放置其他孩子。
但是,也许您不应该在应用程序中使用您想要的行为的边界窗格
请注意,您也可以执行root.getChildren().clear()
删除所有组件并将其再次添加到布局中,但方式不同