2016-02-09 3 views
0

Я столкнулся с препятствием в своем программировании. У меня есть массив групп дуг на панели (HE.getDatabase()) - это массив групп дуг. Я пытаюсь пропустить их и удалить любую дугу, заполняющую BLACK. Если я попытаюсь сделать их зелеными, это сработает, и каждая дуга, заполняющая BLACK, станет зеленой, используя тот же цикл. Как это:Как удалить отдельные узлы внутри групп на панели javafx

main.getDeleteSelected().setOnAction(b -> { 
    for(int i=0; i < HE.getDatabase().size(); i++){ 
     for(Node one: HE.getDatabase().get(i).getChildren()){ 
      if (((Arc) one).getFill() == Color.BLACK){ 
       ((Arc) one).setFill(Color.GREEN); 
      } 
     } 

    } 
}); 

Но если я пытаюсь удалить Arc будет удалить только один или два на определенные действия в то время. Например:

main.getDeleteSelected().setOnAction(b -> { 
    for(int i=0; i < HE.getDatabase().size(); i++){ 
     for(Node one: HE.getDatabase().get(i).getChildren())  { 
      if (((Arc) one).getFill() == Color.BLACK){ 
       HE.getDatabase().get(i).getChildren().remove(one); 
      } 
     } 

    } 
}); 

Мне нужно несколько раз ударять элемент меню, чтобы избавиться от всех BLACK заполненных дуг. Я уверен, что это связано с group.getChildren(). Remove (selected) часть кода. Любая помощь по этому вопросу будет принята с благодарностью. Есть ли другой способ избавиться от узла без ссылки на родителя?

ответ

1

Вы можете сделать

for (Group g : HE.getDatabase()) { 
    g.getChildren().removeIf(node -> ((Arc)node).getFill() == Color.BLACK); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^