2016-05-30 75 views
2

如何在javafx中居中标签的文本?在.css样式表中或直接在fxml中。我试过Label { -fx-text-alignment: center;}在.css中,但它不起作用。即使在场景制作者中,它也不起作用。如何对齐JavaFX/FXML中的中心标签?

+0

什么是您的FXML的标签的父母? – ItachiUchiha

+0

@IchichiUchiha an AnchorPane –

+0

标签中是否有多行文本,或者文本是否都在同一行上? –

回答

8

你基本上有两种选择:

  1. 使用可以中心的标签,让标签成为其“最佳尺寸”的布局窗格(即只是大足以容纳文本),或
  2. 使标签填充其容器的整个宽度,并将其对齐属性设置为居中。

您在评论中说您使用AnchorPane作为标签的父项。对于布局窗格来说,这通常不是一个特别好的选择(基本上你必须对每个控件的边界进行硬编码),并且你不能将事情集中在其中(不是没有大量的工作,反正)。因此,与锚窗格作为家长,你是减少到2的选择:

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

显然,所有可以在FXML设得。但是,一般来说,我会建议使用更合适的layout pane并在该布局窗格上设置适当的属性以使标签居中。

+0

谢谢您的支持,我将AnchorPane更改为VBox,并且我工作了:) –

+0

@James_D如果我们不添加第一行?我忽略了第一行,它工作。 – Halil