使用 JavaFX 8 是否有更简单(更轻松)的方式将 "zone" 中的文本居中?

Is there an easier (lighter) way to center text in a "zone" with JavaFX 8?

所以,首先,我已经实现了我想要的,即在 "zone" 的中心显示一些文本。截图(右上角):

现在,我遇到的问题是我是如何做到这一点的...这是整个选项卡的 FXML 摘录:

<Tab text="Statistics" closable="false">
    <SplitPane orientation="VERTICAL" dividerPositions="0.5">
        <SplitPane orientation="HORIZONTAL" dividerPositions="0.5">
            <GridPane gridLinesVisible="false">
               <!-- snip -->
            </GridPane>
            <!-- HERE -->
            <BorderPane>
                <center>
                    <Label text="No information"/>
                </center>
            </BorderPane>
        </SplitPane>
        <TableView fx:id="stats">
            <!-- snip -->
        </TableView>
    </SplitPane>
</Tab>

如您所见,为了实现直观上应该很简单的功能(在区域中心显示一些文本),我必须创建一个 BorderPane 并放置一个 Label在其 <center> 中;而且我什至不必指定标签上的文本应该居中...

我尝试过的其他事情是:

是否有比上述更简单的解决方案?

使用 StackPane rather than a BorderPane。默认情况下,StackPane 会将您放入其中的任何节点居中。对我来说,这是最简单、最直观的解决方案。

<StackPane>
    <Label text="No information"/>
</StackPane>

另一种处理方法是对标签本身设置约束,以便标签将扩展以填充可调整大小的区域并在该区域内居中:

<SplitPane dividerPositions="0.5" 
           prefHeight="400.0" 
           prefWidth="600.0" 
           xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
   <items>
      <StackPane />
      <Label alignment="CENTER" 
             maxHeight="1.7976931348623157E308" 
             maxWidth="1.7976931348623157E308" 
             text="Label" />
   </items>
</SplitPane>

如果它是一个多行标签(例如它在文本中有 \n 个新行,或者可用宽度强制换行,因为您限制了宽度并设置了 wrapText="true"),那么您需要额外的设置来使标签内的多行文本居中:textAlignment="true"textAlignment不同于alignment;特别是,textAlignment 仅适用于多行控件。