簡體   English   中英

如何在窗格javafx上的組中刪除單個節點

[英]How to remove individual nodes within groups on a pane javafx

我在編程中遇到了障礙。 我在窗格上有一組弧形數組(HE.getDatabase())是一組弧形數組。 我正在嘗試遍歷它們,並刪除所有具有黑色填充的弧。 如果我嘗試使它們綠色,則可以正常工作,並且每個填充有黑色的弧都將使用相同的循環變為綠色。 像這樣:

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);
            }
        }

    }
});

我必須多次單擊菜單項才能消除所有黑色填充的弧。 我很確定這與代碼的group.getChildren()。remove(selected)部分有關。 任何幫助,將不勝感激。 還有另一種不用引用父節點就可以擺脫節點的方法嗎?

你可以做

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

答案在這里。 您不能在要刪除的列表上循環播放。 迭代器的remove方法如何實際刪除對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM