JavaFX GridPane col/row span vs index

Ale*_*J93 2 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)
Run Code Online (Sandbox Code Playgroud)

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

GOX*_*LUS 5

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

      setGridLinesVisible(true);
Run Code Online (Sandbox Code Playgroud)

所以你可以看到网格布局发生了什么(列和行之间的空间,元素的宽度和高度等).关于add来自文档的方法:

add(Node child,int columnIndex,int rowIndex,int colspan,int rowspan)
Run Code Online (Sandbox Code Playgroud)

在第一行:

       grid.add(scenetitle,0,0,2,1);
Run Code Online (Sandbox Code Playgroud)

你添加元素scenetitle,它将位于第 0 列和第 0 行,它有可能跨越2 列和1 行

在终点线:

      grid.add(passName,0,2); 
Run Code Online (Sandbox Code Playgroud)

你添加元素passName,它将位于第0 列和第 2 行,你没有给出它可以跨越的值.

特殊情况

在GridPane举例来说,如果你有一个项目列 0和列 0 行跨度 4,并且在第二行以赋予它会跨越最大跨度的(在这个例子中4)不默认跨度的项目.