详细教程:
http://www.javafxchina.net/blog/2015/04/doc03_treeview/
在JavaFX应用中创建树形结构,你一般需要实例化TreeView类,然后定义一些TreeItem对象,指定其中的某一个成为根节点,将根节点添加到树视图中,并将其它TreeItem对象添加到根节点下
1相关API
-
TreeItem<Model>
数据源,Model是自己定义的数据模型.代表节点的数据类型。
若使用自定义数据类型,节点内容:
重写Model类的toString方法javafx用TreeItem来创建树节点
为每个树节点增加图标
过调用TreeItem对应的构造方法或使用setGraphic方法
根节点添加节点
TreeItem<String> rootItem = new TreeItem<> ("Inbox", rootIcon);
rootItem.setExpanded(true);
for (int i = 1; i < 6; i++) {
TreeItem<String> 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<String> rootItem = new TreeItem<> ("Inbox", rootIcon);
rootItem.setExpanded(true);
for (int i = 1; i < 6; i++) {
TreeItem<String> item = new TreeItem<> ("Message" + i);
rootItem.getChildren().add(item);
}
TreeView<String> 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<String> rootItem = new TreeItem<> ("Inbox", rootIcon);
rootItem.setExpanded(true);
for (int i = 1; i < 6; i++) {
TreeItem<String> item = new TreeItem<> ("Message" + i);
rootItem.getChildren().add(item);
}
TreeView<String> tree = new TreeView<> (rootItem);
StackPane root = new StackPane();
root.getChildren().add(tree);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}