TreeView

  • 创建TreeView和TreeItem

    TreeView<String> treeView = new TreeView<>();  
    treeView.setLayoutX(100);  
    treeView.setLayoutY(100);  
    TreeItem<String> china = new TreeItem<>("中国");  
    TreeItem<String> hlj = new TreeItem<>("黒龙江");  
    TreeItem<String> heb = new TreeItem<>("哈尔滨");  
    TreeItem<String> jms = new TreeItem<>("佳木斯");  
    TreeItem<String> dq = new TreeItem<>("大庆");  
    hlj.getChildren().addAll(heb, jms, dq);  
    TreeItem<String> gd = new TreeItem<>("广东");  
    TreeItem<String> zj = new TreeItem<>("珠海");  
    TreeItem<String> sz = new TreeItem<>("深圳");  
    TreeItem<String> dg = new TreeItem<>("东莞");  
    gd.getChildren().addAll(zj, sz, dg);  
    TreeItem<String> tw = new TreeItem<>("台湾");  
    TreeItem<String> tb = new TreeItem<>("台北");  
    TreeItem<String> gx = new TreeItem<>("高雄");  
    TreeItem<String> tn = new TreeItem<>("台南");  
    tw.getChildren().addAll(tb, gx, tn);  
    china.getChildren().addAll(hlj, gd, tw);  
    treeView.setRoot(china);
    
  • 设置默认展开

    china.setExpanded(true);  
    hlj.setExpanded(true);  
    gd.setExpanded(true);  
    tw.setExpanded(true);
    

  • 设置宽高

    treeView.setPrefWidth(300);  
    treeView.setPrefHeight(100);
    
  • 设置单元格尺寸treeView.setFixedCellSize(40);

  • 设置多选treeView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

  • 设置可编辑

    treeView.setEditable(true);  
    // treeView.setCellFactory(TextFieldTreeCell.forTreeView());
    treeView.setCellFactory(TextFieldTreeCell.forTreeView(new StringConverter<String>() {  
        @Override  
        public String toString(String object) {  
            return object + " - china";  
        }  
        @Override  
        public String fromString(String string) {  
            return string;  
        }  
    }));
    
  • 滚动监听

    treeView.setOnScrollTo(event -> {  
        System.out.println("scroll to " + event.getScrollTarget());  
    });
    
  • 选择监听

    treeView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {  
        System.out.println("selectedItemProperty: " + newValue);  
    });
    
  • 滚动到指定位置treeView.scrollTo(6);

  • 修改值china.setValue("种花家");

  • 是否显示根节点(隐藏)treeView.setShowRoot(false);

  • 是否是叶子节点china.isLeaf()

  • 获得该节点的前后节点

    System.out.println("jms.previousSibling().getValue() = " + jms.previousSibling().getValue());  
    System.out.println("jms.nextSibling().getValue() = " + jms.nextSibling().getValue());  
    System.out.println("jms.previousSibling(dq).getValue() = " + jms.previousSibling(dq).getValue());  
    System.out.println("tw.previousSibling().getValue() = " + tw.previousSibling().getValue());
    
  • 获取父节点jms.getParent().getValue()

  • 是否展开tw.isExpanded()

  • 聚焦

    treeView.getFocusModel().focus(0);  
    treeView.requestFocus();
    
  • 展开的数量treeView.getExpandedItemCount()