如何在 javafx 中将标签居中放置在窗格上

how to center a label on a pane in javafx

我想将结果设置到 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.

Pane 不支持居中 child。因此必须手动完成,即必须计算 layoutXlayoutY 位置 "manually".

您可以通过绑定实现:

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

我对绑定感到厌烦,所以我做了一些简单的。从那以后,我的 "MessageBox" 一直处于中心位置。中心窗格到 AnchorPane。可能与其他控件和容器一起工作,我没有尝试。

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