我正在通过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的行索引。我尝试切换行和列跨度,但这搞砸了,所以我确定这是正确的。我错过了什么?
答案 0 :(得分:5)
它是不同的。首先,它是有用的:
setGridLinesVisible(true);
所以你可以看到网格布局发生了什么(列和行之间的空间,元素的宽度和高度等)。
关于文档中的add
方法:
add(Node child,int columnIndex,int rowIndex,int colspan,int rowspan)
在第一行:
grid.add(scenetitle,0,0,2,1);
添加元素scenetitle
,它将位于列 0和行 0 和它有可能跨度2 列和1 行
在终点线:
grid.add(passName,0,2);
您添加了元素passName
,它将位于列 0和行 2上,您没有给出有关它如何跨越的值。< / p>
特殊情况
在GridPane
中,例如,您有列 0和行 0的项目行范围 4,以及第二行是一个没有默认跨度的项目,它将跨越跨度的最大值(在这个例子中为4)。