JavaFX中Pane和StackPane有什么区别?

8
我正在学习JavaFX,遇到了两个语句,我不知道它们的区别。
Pane pane = new Pane();

并且

StackPane pane = new StackPane();

有谁能为我解释一下这两个术语的区别,以及何时使用哪个?
2个回答

9

两者都是布局,但是 Pane 是其他所有布局的基础,区别在于 Pane 提供了节点自由定位的功能,而 StackPane(以及后缀为 Pane 的其他节点称为 内置布局)则遵循自己的逻辑(位置/约束等)。例如,'StackPane' 在一个背靠前面的堆栈中排列它的子节点StackPane。这只是表面和有限的信息,这里有一个好的教程:JavaFX 中的布局


我看到当你使用StackPane时,形状不遵循坐标系统。无论我指定哪个位置,它们都会自行定位。@BoHalim - Ishan Srivastava
从技术上讲,扩展Pane的所有内容都会保留子级Z顺序。我已经多次使用Pane或AnchorPane完成了这项工作,而没有使用StackPane。因此,真正不同的只是布局方面(即StackPane的Javadoc中的方法)。Pane的Javadoc也提到了StackPane:“注意:如果应用程序需要在父级内保持子级对齐(居中,位于左上角等),则应改用StackPane。” - Manius

4
两种布局的区别在于子元素的定位和可调整大小的子元素的调整。
Pane不进行任何定位。子元素的layoutX和layoutY不会被修改。此外,可调整大小的子元素会被调整为其首选大小。
StackPane根据设置给定子项本身或设置给定StackPane本身的对齐方式来确定子项的位置,如果没有为子项设置位置,将使用默认设置。可调整大小的子元素会被调整为最适合StackPane大小的大小(仍然考虑最大大小)。两者都可以通过为各个子元素设置边距进行修改...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接