在JavaFX中,是否有类似于setLayout();
或setBounds();
的东西?
例如,我想将按钮定位到我想要的位置。
JavaFX 场景图上的所有内容都是 Node。每个节点都有一个 X 坐标和一个 Y 坐标。但是,有不同的方法可以set/change position
子组件。这取决于用于在场景图上显示组件的布局管理器。
- 有布局管理器,如
Group
,它们不计算孩子的默认位置,您可以直接在它们上使用layoutX
和layoutY
- 还有其他布局管理器,例如
Region
,它automatically
使用layoutX
计算子组件的默认位置,并且为了从组件的默认位置调整组件的位置,您需要使用translateX
和translateY
值。
从文档:
如果节点是托管的,并且将区域作为其父节点,则布局区域将根据其自己的布局策略设置 layoutX。如果节点不受组管理或父级,则应用程序可以直接设置 layoutX 来定位它。
你应该阅读 Node 类(开头的长文本),然后特别重新定位,setLayoutX(和 Y)和 setTranslateX(和 Y)。
除了其他人已经提到的之外,如果你可以将你的按钮(或任何节点)放在一个StackPane
内,那么你可以利用StackPane
的对齐属性来获取javafx.geometry.Pos
(子项在StackPane
内的对齐)。例如,在您的情况下:
<StackPane>
<Button translateY="-15" translateX="15" StackPane.alignment="TOP_RIGHT"/>
</StackPane>