嘿编程学生在这里.
我有一个JavaFX应用程序.我有一个窗格,我想从中删除所有矩形.这是代码:
public Pane yard = new Pane();
...
for(int i = 0; i < yard.getChildren().size(); i++)
{
if(yard.getChildren().get(i) instanceof Rectangle)
{
yard.getChildren().remove(i);
}
}
Run Code Online (Sandbox Code Playgroud)
这有时很好.其他时候它根本无法删除任何东西.谢谢您的帮助.
您在向前推进索引时删除项目,导致您不考虑删除某些项目.
你应该用一个Iterator代替来解决这个问题:
Iterator<?> it = yard.getChildren().iterator();
while(it.hasNext()) {
if(it.next() instanceof Rectangle) {
it.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
如果你使用的是Java 8,那么你可以这样做,而且更具可读性:
yard.getChildren().removeIf(Rectangle.class::isInstance);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |