Javafx 2 JavaFX2:如何在Gridpane中删除行或列
如果我想在JavaFx中以编程方式添加一行文本字段,我可以简单地使用gridpane add方法 这将向第1行添加一组文本字段。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
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