【问题标题】:How to align center Label in JavaFX / FXML?如何在 JavaFX / FXML 中对齐中心标签?
【发布时间】:2016-05-30 21:37:37
【问题描述】:

如何在 javafx 中将 Label 的文本居中?在 .css 样式表中或直接在 fxml 中。

我在 .css 中尝试了Label { -fx-text-alignment: center;},但它不起作用。即使在场景构建器中它也不起作用。

【问题讨论】:

  • FXML 中标签的父级是什么?
  • @ItachiUchiha an AnchorPane
  • 你的标签是多行文字,还是文字都在一行?
  • 我只有一行。我想在那个标签上放一个用户名
  • textAlignment property 仅与多行文本相关。它定义了每行如何在包含所有文本行的矩形中对齐(基本上是一个 justify 属性)。

标签: javafx fxml


【解决方案1】:

你基本上有两种选择:

  1. 使用可以使标签居中的布局窗格,并让标签成为其“首选大小”(即刚好足以容纳文本),或者
  2. 使标签填满其容器的整个宽度,并将其对齐属性设置为居中。

您在 cmets 中说您使用 AnchorPane 作为标签的父级。对于布局窗格而言,这通常不是一个特别好的选择(本质上您必须对每个控件的边界进行硬编码),并且您不能在其中居中(无论如何都需要大量工作)。因此,将锚窗格作为父窗格,您只能选择 2:

label.setMaxWidth(Double.MAX_VALUE);
AnchorPane.setLeftAnchor(label, 0.0);
AnchorPane.setRightAnchor(label, 0.0);
label.setAlignment(Pos.CENTER);

显然,所有这些都可以在 FXML 中设置。

不过,总的来说,我建议使用更合适的 layout pane 并在该布局窗格上设置适当的属性以使标签居中。

【讨论】:

  • 感谢您的回答,我将 AnchorPane 更改为 VBox 并且我工作了 :)
  • @James_D 如果我们不添加第一行怎么办?我省略了第一行,它起作用了。
猜你喜欢
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2015-11-29
  • 1970-01-01
  • 1970-01-01
  • 2012-11-27
  • 1970-01-01
相关资源
最近更新 更多