如何在网格窗格中移除行,JavaFX

rhfm7lfc  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(110)

我在网格窗格中添加了节点。就像这样。

// These are ArrayList
FileName.add(new Label());
offset.add(new TextField());
volume.add(new Slider());
mute.add(new Button());
erase.add(new Button());

grid.add(FileName.get(nextIndex), 0, nextIndex, 1, 1);
grid.add(offset.get(nextIndex), 1, nextIndex, 1, 1);
grid.add(volume.get(nextIndex), 2, nextIndex, 1, 1);
grid.add(mute.get(nextIndex), 3, nextIndex, 1, 1);
grid.add(erase.get(nextIndex), 4, nextIndex, 1, 1);

我想从Gridpane中删除一行,但是如果我删除该行中的所有节点,GUI中的行也会被删除,但是row.getRowCount()不会收缩。
我删除了行中的所有节点。

// getRow() is GridPane.getRowIndex()
grid.getChildren().removeIf(n -> (getRow(n) == index));

在GUI中,该行似乎被删除了,但是如果我运行getRowCount(),它并没有缩小

8i9zcol2

8i9zcol21#

感谢您发表评论。我尝试不删除GridPane和列表,它正确启动!
我认为这些评论应该是答案,所以我复制了评论。
詹姆斯的评论↓
你真的需要做更多吗?空行不应该占用任何空间,如果你添加更多的行,你仍然希望它们的索引比任何行的索引都大。如果你真的需要,你必须把比你删除的行大的行中所有节点的行索引减一。
珠宝海洋的评论↓
要理解James的注解,请查看GridPane.getRowCount()的工作方式。它计算行约束的数量,然后查看窗格当前所有子代的行索引,并返回max(numRowConstraints,maxRowIndex)。要减少行计数,您需要手动重新索引行,并确保不再存在于窗格中的行没有不必要的行约束。

相关问题