我需要在 JavaFX 中创建一个带有 3 个标签的布局。每个标签应水平居中。第一个应放置在窗口下方 1/4 处,第二个应放置在中间位置(即垂直居中),第三个应放置在窗口下方 3/4 处。
如果调整窗口大小,标签应保持其相对位置。
这看起来很简单,但我不知道该怎么做。我尝试使用 VBox,但似乎没有办法很好地控制垂直放置。然后我查看了 AnchorPane,但不知道如何执行此操作。
有人可以向我展示一种使用 FXML 或以编程方式执行此操作的简单方法吗?
您可以使用 a 来完成此操作GridPane(可能还有其他方法)。用四行和一列填充它,并使用RowConstraints使每行具有相同的高度并对齐每行底部的标签。使用ColumnConstraints对象使标签水平居中。
SSCCE:
import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.RowConstraints;
import javafx.stage.Stage;
public class LayoutExample extends Application {
@Override
public void start(Stage primaryStage) {
GridPane root = new GridPane();
int numRows = 4 ;
for (int i = 0 ; i < numRows ; i++) {
RowConstraints rc = new RowConstraints();
rc.setPercentHeight(100.0 / numRows);
rc.setValignment(VPos.BOTTOM);
root.getRowConstraints().add(rc);
}
ColumnConstraints cc = new ColumnConstraints();
cc.setHalignment(HPos.CENTER);
cc.setPercentWidth(100);
root.getColumnConstraints().add(cc);
for (int row = 0; row < 3 ; row++) {
Label label = new Label("Label "+(row+1));
root.add(label, 0, row);
}
Scene scene = new Scene(root, 400, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12348 次 |
| 最近记录: |