JavaFX GridPane 列/行跨度与索引

标签 java javafx row col gridpane

我正在通过 Oracle 教程学习 JavaFX,但我对这个特定主题感到困惑。我似乎是唯一感到困惑的人,因为我的搜索没有带来任何有用的结果。我正在创建一个包含 2 列 (0,1) 和 3 行 (0,1,2) 的基本 GridPane。第一行我有标题,另外两行左边有一个标签,右边有一个文本框——这是一个登录屏幕

登录
用户名 | [_______]
密码 | [_______]

这是填充网格的代码:

    Text scenetitle = new Text("Login");
    scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 20));
    grid.add(scenetitle,0,0,2,1); // Row span here is set to 1

    Label userName = new Label("User Name");
    grid.add(userName,0,1);

    TextField userTField = new TextField();
    grid.add(userTField,1,1);

    Label passName = new Label("Password");
    grid.add(passName,0,2); // Here I'm referencing a row index of 2

    TextField passTField = new TextField();
    grid.add(passTField,1,2)

该代码运行完美,因为它基本上只是教程中的复制粘贴。但是,我的困惑来自于我的行跨度为 1,但我引用的行索引为 2。我尝试切换行和列跨度,但这搞砸了,所以我确定这是正确的.我错过了什么?

最佳答案

它是不同的。首先它是有用的:

      setGridLinesVisible(true);

这样您就可以看到网格布局发生了什么(列和行之间的空间、元素的宽度和高度等)。 关于文档中的 add 方法:

add(Node child,int columnIndex,int rowIndex,int colspan,int rowspan)

In the first line:

       grid.add(scenetitle,0,0,2,1);

您添加元素 scenetitle ,它将位于column 0 和 row 0 and 它有跨越 2 个 和 1 个

的可能性

In the finish line:

      grid.add(passName,0,2); 

你添加了元素 passName 并且它会被定位在 column 0 和 row 2 ,你还没有给出它如何能的值跨度。

特殊情况

GridPane 中,如果您在 column 0 和 row 0 上有一个 row span 4 的项目, 在第二行中,没有默认跨度的项目将跨越最大跨度(在本例中为 4)。

关于JavaFX GridPane 列/行跨度与索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38047421/

相关文章:

java - 在 JavaFX 中动画渲染效果

java - 运行JavaFx媒体应用程序时出现模块错误

类似安卓中继器的功能

java - 如何在 RecyclerView 中显示 ArrayList?

java - 如何使用 Guice 模块覆盖减去绑定(bind)?

java - 为 JD-Eclipse 安装 Realignment 时出现问题

Java - 选择复选框时的错误操作

r - 使用 dplyr r 在列中更改值时提取行

html - Bootstrap中的 "row"类是什么意思,它和容器的区别,它和col-***-*怎么叠加?

java - 子构造函数似乎在没有我调用的情况下调用了父构造函数