【问题标题】:JavaFX GridPane col/row span vs indexJavaFX GridPane 列/行跨度与索引
【发布时间】:2016-10-29 01:57:35
【问题描述】:

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

【问题讨论】:

    标签: java javafx row col gridpane


    【解决方案1】:

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

          setGridLinesVisible(true);
    

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

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

    在第一行:

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

    你添加元素scenetitle,它将被定位在column 0和row 0 并且它有可能跨越2 和1个

    在终点线:

          grid.add(passName,0,2); 
    

    您添加元素passName,它将位于column 0 和row 2 上,您没有给出关于它如何跨越的值。

    特殊情况

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

    【讨论】:

    • 哦,我明白了。所以基本上,colspan 就像网格元素的“宽度”,而rowspan 就像“高度”?
    • @AlexanderJ93 如果您将列跨度设置为 2 并且 GridPane 有 2 列,那么项目会更大,以捕获两列。提及我给出的一个关于特殊情况的示例。也尝试播放使用 GridPane ,enable(setGridLinesVisible(true)) 真的很有帮助,你会深入了解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2017-04-19
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多