Javafx 2 JavaFX2:如何在Gridpane中删除行或列

Javafx 2 JavaFX2:如何在Gridpane中删除行或列,javafx-2,gridpane,Javafx 2,Gridpane,如果我想在JavaFx中以编程方式添加一行文本字段,我可以简单地使用gridpane add方法 这将向第1行添加一组文本字段。 for (int i = 0; i < Fields.size(); i++) { gridpane.add(new TextField(), i, 1); } for(int i=0;i

如果我想在JavaFx中以编程方式添加一行文本字段,我可以简单地使用gridpane add方法

这将向第1行添加一组文本字段。

for (int i = 0; i < Fields.size(); i++) {
   gridpane.add(new TextField(), i, 1);
}
for(int i=0;i

类似地,如何删除行?。我在JavaFX中找不到合适的方法来方便地删除行/列。

没有直接等效的方法。要删除节点,只需使用
gridpane.getChildren().remove(…)
gridpane.getChildren().removeAll(…)并传入要从窗格中删除的节点。

这非常有效:

while(MainGridPane.getRowConstraints().size() > 0){
    MainGridPane.getRowConstraints().remove(0);
}

while(MainGridPane.getColumnConstraints().size() > 0){
    MainGridPane.getColumnConstraints().remove(0);
}
在Java 8+中,您可以使用:

警告
如果从0行删除项目,请同时选中
GridPane.getRowIndex(节点)=null
,即

node -> GridPane.getRowIndex(node) == null || GridPane.getRowIndex(node) == 0

(我认为这是JavaFX在FXML中的相应元素中没有给出行号时,将行号保留为
null
,即使在FXML中没有给出行号意味着元素在第0行,因为默认行是第0行。)

这似乎并没有从窗格中删除行或列,如果我试图通过从最后的行和列中删除
节点来缩小网格,那么其他行和列不会扩展以填充空间,行和列仍然存在……在JavaFX中,布局是自上而下的;i、 e.
网格窗格所占用的空间(及其位置)由其父节点确定。因此,这听起来像是管理布局的问题(但也可能是
GridPane
上的行和/或列约束错误)。您可能应该发布一个问题,用一些代码精确显示您正在尝试做什么。您是否对列或行设置了一些大小限制?因为这可能导致列即使为空也会占用空间。这应该是
|
,行索引不能同时为null和0
node -> GridPane.getRowIndex(node) == null || GridPane.getRowIndex(node) == 0