1

Swing 将 LayoutManager 与容器分开。据我所知,JavaFX 没有这样做。

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

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

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

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

4

2 回答 2

0

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

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

于 2013-01-05T19:02:02.913 回答
0

这样的事情不工作吗?

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 中有一个工具,它会如何自动执行此操作?每个模板都需要知道它应该在哪里呈现特定组件,并且可以说最简单的方法就是创建一个新模板,将组件安排在不同的布局中,并在用户想要查看不同的布局时交换模板。

于 2013-01-04T20:18:01.360 回答