是否有更简单(更轻松)的方法将文本置于JavaFX 8的“区域”中?

所以,首先,我已经实现了我想要的,也就是说,在“区域”的中心显示一些文本。 屏幕截图(右上角):

在此处输入图像描述

现在,我遇到的问题是我是如何实现这一点的…这是整个标签的FXML摘录:

          

正如您所看到的,为了实现直观上应该简单的东西(在区域的中心显示一些文本),我必须创建一个BorderPane并在其放置一个Label ; 我甚至不必指定标签上的文字应该居中……

我尝试过的其他事情是:

  • 放置Label本身:那么ScrollPane的分隔符将被彻底忽略; 左侧将扩展到Scene的整个宽度(是吗?)减去分隔符的宽度加上标签的文本,更重要的是,文本将位于区域的顶部;
  • AnchorPane包围它:虽然这确实保持了区域的大小,但文本将出现在左上角而不是中心。

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

使用StackPane而不是BorderPane 。 默认情况下,StackPane将使您放入其中的任何节点居中。 对我而言,这是最简单,最直观的解决方案。

    

处理它的另一种方法是在标签上设置约束,以便标签扩展以填充可resize的区域并将其自身置于区域内:

       

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