如何在 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);
顺便说一句,我知道如何使它以 StackPane
和 GridPane
为中心,但在这种情况下我需要使用普通的 Pane
.
Pane
不支持居中 child。因此必须手动完成,即必须计算 layoutX
和 layoutY
位置 "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);
我想将结果设置到 Pane
的中心。
Label results = new Label("You win");
Pane pane = new Pane();
pane.getChildren().add(results);
我已经尝试了下面的两行代码,但都不起作用。
results.setAlignment(Pos.CENTER);
results.setContentDisplay(ContentDisplay.CENTER);
顺便说一句,我知道如何使它以 StackPane
和 GridPane
为中心,但在这种情况下我需要使用普通的 Pane
.
Pane
不支持居中 child。因此必须手动完成,即必须计算 layoutX
和 layoutY
位置 "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);