提问者:小点点

JavaFX GridPane列/行跨度vs索引


我正在通过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。我尝试切换行和列跨度,但这搞砸了,所以我确定这是正确的。我错过了什么?


共1个答案

匿名用户

这是不同的。首先,它用于:

      setGridLinesVisible(true);

所以你可以看到网格布局是怎么回事(列和行之间的空间、元素的宽度和高度等)。关于add方法from留档:

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

在第一行:

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

您添加元素场景标题,它将位于第0列和第0行,并且它可以跨越2列和1行

在终点线:

      grid.add(passName,0,2); 

您添加元素passName,它将位于第0列和第2行,您没有给出有关它的跨度的值。

特殊情况

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