[英]How to delete a specific TreeItem from the TreeView in javafx?
我有一个名为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 ;
}
}
我想知道如何从TreeView
中删除TreeItem
- 如何删除Mangoes
使其不会显示在TreeView
中?
要删除树项,您需要将其从其父项的getChildren()
方法返回的列表中删除。 如果您有对要删除的项目的引用,这很简单。 例如,如果你这样做
// makeBranch("Mangoes", fruits) ;
TreeItem<String> mangoes = makeBranch("Mangoes", fruits) ;
然后稍后您可以简单地从其父项中删除该项目:
mangoes.getParent().getChildren().remove(mangoes);
在这种情况下,既然你知道父母,你也可以这样做
fruits.getChildren().remove(mangoes);
您还可以在父母的getChildren()
上使用List
中定义的任何标准方法,例如
// 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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.