在 JavaFX 中,有几种主要的面板(Pane),它们在布局和排版子节点时有各自的特性和用途。以下是常见的几个面板及其区别:
Pane
- 描述:最基本的面板,不提供任何布局管理。
- 特点:子节点的位置由它们的
layoutX
和layoutY
属性决定,完全由用户自行控制。 - 用途:适用于需要完全自定义布局的场景,或者需要在其他布局容器上进行自定义调整的情况。
HBox(水平布局)
- 描述:水平布局面板,将子节点从左到右按顺序排列。
- 特点:所有子节点在水平方向上依次排列,且可以通过
spacing
属性来控制子节点之间的间距。 - 用途:适用于需要将子节点水平对齐的场景,如导航栏、按钮组。
VBox(垂直布局)
- 描述:垂直布局面板,将子节点从上到下按顺序排列。
- 特点:所有子节点在垂直方向上依次排列,并且可以通过
spacing
属性来控制子节点之间的间距。 - 用途:适用于需要将子节点垂直对齐的场景,如表单输入框、菜单栏。
BorderPane(边界布局)
- 描述:将布局分为五个部分:顶部(top)、底部(bottom)、左侧(left)、右侧(right)和中心(center)。
- 特点:每个区域可以放置一个节点,节点将占用相应区域的空间。
- 用途:适用于布局中需要划分明确区域的情况,如典型的标题栏-内容区-侧边栏布局。
GridPane(网格布局)
- 描述:将子节点排列在网格中,类似于 HTML 中的表格布局。
- 特点:通过行和列来组织子节点,每个单元格都可以包含一个节点,可以通过
rowSpan
和colSpan
属性来控制节点跨越的行数和列数。 - 用途:适用于需要将节点对齐在行和列中的场景,如棋盘布局、表格布局。
StackPane(堆栈布局)
- 描述:子节点彼此堆叠放置,类似于 Photoshop 中的图层叠加。
- 特点:第一个添加的节点在最底层,后面的节点依次叠加在上面,可以通过节点的对齐属性来控制它们的显示位置。
- 用途:适用于需要在相同位置显示多个重叠的节点的情况,如卡片叠放、分层显示。
FlowPane(流式布局)
- 描述:类似于 HBox 和 VBox,但子节点会根据面板的尺寸在行或列中自动流动。
- 特点:可以水平或垂直排列子节点,当一行或一列空间不足时,节点会自动换行或换列。
- 用途:适用于需要自适应窗口大小变化的布局,如图片展示墙、标签流。
AnchorPane(锚点布局)
- 描述:允许子节点锚定在父容器的任意边缘。
- 特点:可以通过指定节点相对于容器边缘的距离来控制节点位置,可设置
topAnchor
、bottomAnchor
、leftAnchor
和rightAnchor
属性。 - 用途:适用于需要对节点位置进行精细控制,并与容器边缘保持相对距离的情况。
每种面板都有其适用的场景,选择哪种取决于布局需求和节点排布的方式。