Как удалить конкретный c TreeItem из TreeView в javafx? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть TreeView под названием foodTree, к которому я добавил несколько TreeItem. Код:

import javafx.application.Application ;
import javafx.scene.Scene ;
import javafx.event.* ;
import javafx.stage.* ;
import javafx.scene.layout.* ;
import javafx.scene.control.* ;
import javafx.geometry.* ;
import javafx.scene.control.cell.PropertyValueFactory ;
import javafx.collections.* ;

public class Tree extends Application
{
    TreeView foodTree ;

    public static void main(String[] args) 
    {
        Application.launch(args) ;
    }

    @Override
    public void start(Stage window)
    {
        TreeItem<String> root, vegetables, fruits ;

        root = new TreeItem<>() ;
        root.setExpanded(true) ;

        vegetables = makeBranch("Vegies", root) ;
        makeBranch("Cabbage", vegetables) ;
        makeBranch("Beans", vegetables) ;

        fruits = makeBranch("Fruits", root) ;
        makeBranch("Apples", fruits) ;
        makeBranch("Mangoes", fruits) ;

        foodTree = new TreeView<>(root) ;
        foodTree.setShowRoot(false) ;
        foodTree.setPrefWidth(180) ;
        foodTree.setMaxSize(Region.USE_PREF_SIZE, Region.USE_PREF_SIZE) ;

        BorderPane b_pane = new BorderPane() ;
        b_pane.setLeft(foodTree) ;

        Scene scene = new Scene(b_pane, 300, 200) ;

        window.setScene(scene) ;
        window.show() ;
    }

    public TreeItem<String> makeBranch(String title, TreeItem<String> parent) 
    {
        TreeItem<String> item = new TreeItem<>(title) ;
        item.setExpanded(false) ;

        parent.getChildren().add(item) ;

        return item ;
    }   
}

I wi sh, чтобы узнать, как удалить TreeItem из TreeView - как я могу удалить Mangoes, чтобы он не отображался в TreeView?

1 Ответ

0 голосов
/ 10 июля 2020

Чтобы удалить элемент дерева, вам нужно удалить его из списка, возвращаемого его родительским методом getChildren(). Если у вас есть ссылка на элемент, который нужно удалить, это просто. Например, если вы выполните

// makeBranch("Mangoes", fruits) ;
TreeItem<String> mangoes = makeBranch("Mangoes", fruits) ;

, то позже вы можете просто удалить элемент из его родителя:

mangoes.getParent().getChildren().remove(mangoes);

В этом случае, поскольку вы знаете родителя, вы также можете просто do

fruits.getChildren().remove(mangoes);

Вы также можете использовать любой из стандартных методов, определенных в List для родительского getChildren(), например,

// remove any items from fruits whose value is "Mangoes":
fruits.getChildren().removeIf(treeItem -> treeItem.getValue().equals("Mangoes"));
// remove the first child from fruits:
fruits.getChildren().remove(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...