Layout JavaFX2在运行时动态更改布局?

Layout JavaFX2在运行时动态更改布局?,layout,javafx-2,Layout,Javafx 2,Swing将LayoutManager与容器分开。据我所知,JavaFX并没有做到这一点 我有一个复杂的节点结构,我希望用户能够在几种不同的布局方法之间切换。与指定流的用户等效的东西,所有容器都转换为流窗格的等效物。然后他们可以选择垂直,所有东西都垂直布置 除了交换节点/重新创建整个结构之外,还有其他方法吗 我应该注意:层次结构在运行时会发生变化,并且嵌套得很深 我之所以提到Swing,是因为在Swing中维护整个层次结构中所有容器的列表,并通过简单的循环(或不带列表的树遍历)在它们上设置一个新

Swing将LayoutManager与容器分开。据我所知,JavaFX并没有做到这一点

我有一个复杂的节点结构,我希望用户能够在几种不同的布局方法之间切换。与指定流的用户等效的东西,所有容器都转换为流窗格的等效物。然后他们可以选择垂直,所有东西都垂直布置

除了交换节点/重新创建整个结构之外,还有其他方法吗

我应该注意:层次结构在运行时会发生变化,并且嵌套得很深


我之所以提到Swing,是因为在Swing中维护整个层次结构中所有容器的列表,并通过简单的循环(或不带列表的树遍历)在它们上设置一个新的LayoutManager,这非常简单。JavaFX似乎没有这种可能性,因为布局行为似乎是节点的内部行为。

类似的东西不起作用吗

AnchorPane main=new AnchorPane();
AnchorPane sub1=new AnchorPane();
sub1.getChildren().add(btn);
main.getChildren().add(sub1);
当您要切换布局时

AnchorPane sub2=new AnchorPane();
main.getChildren().remove(sub1);
main.getChildren().add(sub2);
编辑 我想我错过了你的表现。这就是我的设想

Definitions to Various Components
MainLayout

-> CustomLayout 1
     -> References to various components.  ( Essentially you are not creating all the components for every layout, rather you are referring to them in each layout )
-> CustomLayout 2
     -> References to various components. ( More or less a different arrangement of the same components, adds some component references and removes some )
-> CustomLayout 3
     -> References to various components.

做一个大胆的陈述,但是如果JavaFX中有一个工具,它将如何自动做到这一点?每个模板都需要知道应该在何处呈现特定组件,可以说最简单的方法就是创建一个新模板,将组件安排在不同的布局中,并在用户希望看到不同的布局时交换模板

这在Swing中不容易做到。您仍然需要再次设置各个组件上的所有布局约束,除非您的布局非常简单

我看不出swing和javaFX在这方面有多大区别。在JavaFX中,您需要将相同的控件添加到不同的容器(VBox、HBox等),但仍然不需要每次都重新创建控件。在节点层次结构中间发现容器有一点尴尬,但我确信有一种优雅的递归解决方案:

这是“除了交换节点/重新创建整个结构”之外,我在我的问题中提到过。我必须对树中的所有非叶节点执行您所拥有的操作。我想知道是否有一些更轻的解决方案。