gpt4 book ai didi

Java GridPane 中间部分问题

转载 作者:行者123 更新时间:2023-11-30 07:39:23 29 4
gpt4 key购买 nike

我正在尝试使用 GridPane 创建登录 UI。我的窗口以 300 x 300 打开,并且我已将行和列索引设置为某些值,以便我的文本“用户 ID”和“密码”出现在窗口的中心(与所有四个边的距离相等)。看起来像这样

this

当我最大化窗口时,问题发生,这两个字段(用户 ID 和密码)不再停留在最大化窗口的中心,结果是这样的

enter image description here

我尝试将 GridPane 放置在 BorderPane 的中心,但没有成功。我怎样才能让这两个人始终保持他们的位置?

以下代码:

void tryGridPaneFunc()
{
main.setTitle("GridPane Try");
BorderPane root = new BorderPane();
GridPane grid = new GridPane();
Text usr = new Text("USER ID:");
Text pwd = new Text("PASSWORD:");

grid.add(usr, 18,20);
grid.add(pwd, 18, 21);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(20));
//grid.setGridLinesVisible(true);


HBox empty1 = new HBox();
empty1.setPadding(new Insets(40));
HBox empty2 = new HBox();
empty2.setPadding(new Insets(40));
HBox empty3 = new HBox();
empty3.setPadding(new Insets(40));
HBox empty4 = new HBox();
empty4.setPadding(new Insets(40));


empty1.setHgrow(empty1, Priority.ALWAYS);
empty2.setHgrow(empty1, Priority.ALWAYS);
empty3.setHgrow(empty1, Priority.ALWAYS);
empty4.setHgrow(empty1, Priority.ALWAYS);


root.setTop(empty1);
root.setBottom(empty2);
root.setLeft(empty3);
root.setRight(empty4);

root.setCenter(grid);

Scene msc = new Scene(root,500,500);

main.setScene(msc);

main.show();
}

如果此类帖子已经存在,我很抱歉。我搜索的时候他们没有出现。因此,如果您找到任何内容,请提供其链接。

感谢您抽出宝贵的时间。

最佳答案

不需要在网格 Pane 中添加空区域并使用空行和列。 GridPane 有一个 alignment property用于设置“网格在网格 Pane 的宽度和高度内的对齐方式”。因此,您需要的只是grid.setAlignment(Pos.CENTER);

SSCCE:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class CenteredGridPane extends Application {

@Override
public void start(Stage main) {
main.setTitle("GridPane Try");
GridPane grid = new GridPane();
Text usr = new Text("USER ID:");
Text pwd = new Text("PASSWORD:");

grid.add(usr, 0, 0);
grid.add(pwd, 0, 1);
grid.setHgap(10);
grid.setVgap(10);

grid.setAlignment(Pos.CENTER);

Scene msc = new Scene(grid,500,500);

main.setScene(msc);

main.show();
}

public static void main(String[] args) {
launch(args);
}
}

关于Java GridPane 中间部分问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34909437/

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