Java 规则-“fx文本对齐”;不';不行?

Java 规则-“fx文本对齐”;不';不行?,java,javafx,javafx-css,Java,Javafx,Javafx Css,我正在用JavaFX创建一个简单的用户界面,其中使用了一些显示文本的标签。我尝试使用以下规则将文本移动到标签的中心: -fx-text-alignment: center 但它不起作用,默认情况下文本仍然位于左侧。我还检查了我没有使用任何其他规则来覆盖这一点。有什么想法吗? 以下是css代码: #subtitle { -fx-font: bold italic 18pt "Arial"; -fx-text-alignment: center; -fx-effect: d

我正在用JavaFX创建一个简单的用户界面,其中使用了一些显示文本的标签。我尝试使用以下规则将文本移动到标签的中心:

-fx-text-alignment: center
但它不起作用,默认情况下文本仍然位于左侧。我还检查了我没有使用任何其他规则来覆盖这一点。有什么想法吗? 以下是css代码:

#subtitle
{
    -fx-font: bold italic 18pt "Arial";
    -fx-text-alignment: center;
    -fx-effect: dropshadow( one-pass-box, black, 8, 0.0, 2, 0 );
    -fx-text-fill: #1ebd1e;
}
Java代码:

Label title = new Label("Trees");
title.setId("subtitle");
grid.add(title, 0, 0, 2, 1);

您可以使用以下代码解决此问题:

Label title = new Label("Trees");
title.setId("subtitle");
GridPane.setHalignment(title, HPos.CENTER);
gridpane.add(title, 0, 0, 2, 1);
这是我得到的结果:

注意:
-fx文本对齐
标记将使标签边框内的文本居中。如果标签的宽度正好是适合文本所需的大小,则对齐方式没有任何更改,但如果设置的宽度大于文本所需的宽度,则可以在标签边框内对齐文本。

我也有同样的问题

标签中的文本不能居中或右对齐,或者。。。 当标签大于文本时,CSS中或类似于
mylabel.setTextAlignment(TextAlignment.Center)
的代码中都不会出现这种情况

我改用
mylabel.setAlignment(Pos.CENTER)
来解决这个问题;
也可以在CSS中使用
-fx对齐:居中

添加“-fx边框颜色:红色;”以查看标签的宽度。我认为您需要在标签所在的行上跨越两列。请参阅gridpane文档以了解扩展。。。。然后对gridpane的跨区单元格应用对齐。@Uluk Biy如果我的理解正确,“grid.add(title,0,0,2,1);”的第三个参数应该能够对行进行跨区。我还尝试了“GridPane.setColumnSpan(title,2);”,但没有成功。但是你是对的,标签大小和文本大小一样大。是的,它对我也适用。我还尝试了“GridPane.setConstraints(title,0,0,2,1,HPos.CENTER,VPos.CENTER);”也可以做同样的事情。但是我仍然对css风格的使用方式感到困惑。如何使css规则“-fx文本对齐:居中;”起作用?要使用标签,您必须为标签提供与网格窗格相同的宽度。然后你可以使用这个css标签将文本放在标签的中心。如果我的答案解决了你的问题,请标记为正确答案。Tks。关于它的一个关键点是:“当文本为多行时,指定文本行的行为……此设置仅影响相对于文本边界的多行文本。”我的经验是,当文本有多行时,文本对齐方式按照广告的方式工作,如果不适合您,您应该创建一个示例应用程序并报告一个bug:如果您使用的标签没有多行,那么这应该是可以接受的答案。