如何在javafx中的窗格上居中标签

时间:2016-04-26 01:54:49

标签: java layout javafx pane

我想将结果设置为Pane的中心。

Label results = new Label("You win");
Pane pane = new Pane();
pane.getChildren().add(results);

我已尝试过以下两行代码,但都无效。

results.setAlignment(Pos.CENTER);
results.setContentDisplay(ContentDisplay.CENTER);

顺便说一句,我知道如何以StackPaneGridPane为中心,但在这种情况下,我需要使用普通Pane

2 个答案:

答案 0 :(得分:4)

Pane不支持以儿童为中心。因此,必须手动完成,即layoutXlayoutY位置必须“手动”计算。

您可以通过绑定来实现这一目标:

results.layoutXProperty().bind(pane.widthProperty().subtract(results.widthProperty()).divide(2));
// procede accordingly with layoutY / height

答案 1 :(得分:-1)

我对绑定感到无聊,所以我做了一些简单的事情。从那时起,我的“ MessageBox”始终处于中心位置。中心窗格到AnchorPane。可以与其他控件和容器一起使用,我没有尝试过。

double w = (anchorpane.getWidth()/2)-(panel.getWidth()/2);
double h = (anchorpane.getHeight()/2)-(panel.getHeight()/2);
panel.setLayoutX(w); panel.setLayoutY(h);