gpt4 book ai didi

基于窗口大小百分比的 JavaFX 布局

转载 作者:行者123 更新时间:2023-12-01 22:58:42 27 4
gpt4 key购买 nike

我需要在 JavaFX 中创建一个带有 3 个标签的布局。每个标签应水平居中。第一个应放置在窗口下方 1/4 处,第二个应放置在中间位置(即垂直居中),第三个应放置在窗口下方 3/4 处。

如果调整窗口大小,标签应保持其相对位置。

看起来很简单,但我不知道该怎么做。我尝试使用 VBox,但似乎没有办法很好地控制垂直放置。然后我查看了 AnchorPane,但不知道如何执行此操作。

有人可以向我展示一种使用 FXML 或以编程方式执行此操作的简单方法吗?

最佳答案

您可以使用 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);
}
}

enter image description here

关于基于窗口大小百分比的 JavaFX 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36393170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com