JavaFX:如何定位组件/节点



在JavaFX中,是否有类似于setLayout();setBounds();的东西?

例如,我想将按钮定位到我想要的位置。

JavaFX 场景图上的所有内容都是 Node。每个节点都有一个 X 坐标和一个 Y 坐标。但是,有不同的方法可以set/change position子组件。这取决于用于在场景图上显示组件的布局管理器。

  • 有布局管理器,如 Group ,它们不计算孩子的默认位置,您可以直接在它们上使用layoutXlayoutY
  • 还有其他布局管理器,例如 Region ,它automatically使用layoutX计算子组件的默认位置,并且为了从组件的默认位置调整组件的位置,您需要使用translateXtranslateY值。

从文档:

如果节点是托管的,并且将区域作为其父节点,则布局区域将根据其自己的布局策略设置 layoutX。如果节点不受组管理或父级,则应用程序可以直接设置 layoutX 来定位它。

你应该阅读 Node 类(开头的长文本),然后特别重新定位,setLayoutX(和 Y)和 setTranslateX(和 Y)。

除了其他人已经提到的之外,如果你可以将你的按钮(或任何节点)放在一个StackPane内,那么你可以利用StackPane的对齐属性来获取javafx.geometry.Pos(子项在StackPane内的对齐)。例如,在您的情况下:

<StackPane>
    <Button translateY="-15" translateX="15"  StackPane.alignment="TOP_RIGHT"/>
</StackPane>

相关内容

最新更新