TreeView的使用

详细教程:
http://www.javafxchina.net/blog/2015/04/doc03_treeview/

在JavaFX应用中创建树形结构,你一般需要实例化TreeView类,然后定义一些TreeItem对象,指定其中的某一个成为根节点,将根节点添加到树视图中,并将其它TreeItem对象添加到根节点下

1相关API

  • TreeItem数据源,Model是自己定义的数据模型.代表节点的数据类型。
    若使用自定义数据类型,节点内容:
    重写Model类的toString方法

    javafx用TreeItem来创建树节点
    为每个树节点增加图标
    过调用TreeItem对应的构造方法或使用setGraphic方法
    根节点添加节点

TreeItem rootItem = new TreeItem<> ("Inbox", rootIcon);
rootItem.setExpanded(true);
for (int i = 1; i < 6; i++) {
      TreeItem item = new TreeItem<> ("Message" + i);
      rootItem.getChildren().add(item);
}      

所有在for循环中创建的的TreeItem都通过调用getChildren和add方法被添加到了root节点上

在根节点对象上对setExpanded方法的调用定义了树视图的初始外观。默认情况下所有的TreeItem实例是被折叠起来的,并且必须在必要时手工展开。如果在setExpanded方法调用时设置参数为true,这样会在程序启动时会自动展开根节点(要展开全部节点,每个TreeItem都要setExpanded为true)

  • TreeView
    refresh刷新树
    setRoot设置树节点

示例代码


import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class TreeViewSample extends Application {

    private final Node rootIcon = new ImageView(
        new Image(getClass().getResourceAsStream("folder_16.png"))
    );

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

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Tree View Sample");        

TreeItem rootItem = new TreeItem<> ("Inbox", rootIcon);
rootItem.setExpanded(true);
        for (int i = 1; i < 6; i++) {
TreeItem item = new TreeItem<> ("Message" + i);
rootItem.getChildren().add(item);
        }        
TreeView tree = new TreeView<> (rootItem);
        StackPane root = new StackPane();
        root.getChildren().add(tree);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}

import javafx.application.Application;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
 
public class TreeViewSample extends Application {
 
    private final Node rootIcon = new ImageView(
        new Image(getClass().getResourceAsStream("folder_16.png"))
    );
 
    public static void main(String[] args) {
        launch(args);
    }
 
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Tree View Sample");        
 
TreeItem rootItem = new TreeItem<> ("Inbox", rootIcon);
rootItem.setExpanded(true);
        for (int i = 1; i < 6; i++) {
TreeItem item = new TreeItem<> ("Message" + i);
rootItem.getChildren().add(item);
        }        
TreeView tree = new TreeView<> (rootItem);
        StackPane root = new StackPane();
        root.getChildren().add(tree);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }
}

你可能感兴趣的:(TreeView的使用)