我希望我的Javafx组件(如标签,单独包装在VBox中的TextFields)保留在窗口的中心,即使它已调整大小。看到attatched Images。目前,这些组件包含在anchorPane中。 FXML文件代码如下。请告诉我如何做到这一点。感谢。
Image for small size window where components are in middle.
Assert.assertEquals("Twitter",driver.getTitle().trim())
答案 0 :(得分:6)
你应该把你喜欢的所有东西放在一个组中间。然后你把你的组放在StackPane中。这样,您的组始终处于StackPane的中心。根据需要定义StackPane的大小,或者只是将其绑定到AnchorPane父级,如示例所示:
它应该在fxml:
中变成这样的东西 <AnchorPane>
<children>
<StackPane AnchorPane.bottomAnchor="0.0" AnchorPane.left...>
<children>
<Group StackPane.alignment="CENTER">
<children>
...
</children>
</Group>
</children>
</StackPane>
</children>
</AnchorPane>
这应该可以解决你的问题。
答案 1 :(得分:0)
我很快将它们放在一起。在您的代码中有许多AnchorPanes,中间的表单元素位于不同的位置,我认为这使得一切都变得更难。相反,我使用了GridPane:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.text.*?>
<VBox prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<MenuBar>
<menus>
<Menu text="Account">
<items>
<MenuItem fx:id="menuItemCreate" text="Create" />
<MenuItem fx:id="menuItemUpdate" text="Update" />
<MenuItem fx:id="menuItemDelete" text="Delete" />
<MenuItem fx:id="menuItemLedger" text="Ledger" />
</items>
</Menu>
<Menu text="In Stock">
<items>
<MenuItem fx:id="menuItemAddItem" text="Add items" />
<MenuItem fx:id="menuItemInventory" text="Inventory" />
</items>
</Menu>
<Menu text="Reports">
<items>
<MenuItem fx:id="menuItemSalesReport" text="Sales report" />
<MenuItem fx:id="menuItemProfitReport" text="Profit report" />
<MenuItem fx:id="menuItemRcvables" text="Receivables" />
</items>
</Menu>
</menus>
</MenuBar>
<BorderPane VBox.vgrow="ALWAYS">
<top>
<Label text="Create a new customer account" BorderPane.alignment="CENTER">
<font>
<Font name="Arial Narrow Bold" size="17.0" />
</font>
<BorderPane.margin>
<Insets />
</BorderPane.margin>
</Label>
</top>
<center>
<GridPane alignment="TOP_CENTER" hgap="10.0" vgap="5.0">
<columnConstraints>
<ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" percentWidth="0.0" />
<ColumnConstraints hgrow="SOMETIMES" percentWidth="0.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints />
<RowConstraints />
<RowConstraints />
<RowConstraints />
</rowConstraints>
<children>
<Label text="Label">
<GridPane.margin>
<Insets />
</GridPane.margin>
</Label>
<Label text="Label" GridPane.rowIndex="1" />
<Label text="Label" GridPane.rowIndex="2" />
<Label text="Label" GridPane.rowIndex="3" />
<TextField GridPane.columnIndex="1" />
<TextField GridPane.columnIndex="1" GridPane.rowIndex="1" />
<TextField GridPane.columnIndex="1" GridPane.rowIndex="2" />
<TextField GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
<BorderPane.margin>
<Insets top="15.0" />
</BorderPane.margin>
</GridPane>
</center>
<VBox.margin>
<Insets top="15.0" />
</VBox.margin>
</BorderPane>
</children>
</VBox>
如果您想要使用顶部和/或底部重新调整大小,可以调整边距。
注意:正如我在代码中看到的,有很多不可见的对象。我不知道他们是故意的还是只是死代码。在我的例子中,我只创建了可见的东西。