詳細(xì)教程:
http://www.javafxchina.net/blog/2015/04/doc03_treeview/
在JavaFX應(yīng)用中創(chuàng)建樹形結(jié)構(gòu),你一般需要實例化TreeView類,然后定義一些TreeItem對象,指定其中的某一個成為根節(jié)點姻檀,將根節(jié)點添加到樹視圖中拳亿,并將其它TreeItem對象添加到根節(jié)點下
1相關(guān)API
-
TreeItem<Model>
數(shù)據(jù)源,Model是自己定義的數(shù)據(jù)模型.代表節(jié)點的數(shù)據(jù)類型。
若使用自定義數(shù)據(jù)類型铺纽,節(jié)點內(nèi)容:
重寫Model類的toString方法javafx用TreeItem來創(chuàng)建樹節(jié)點
為每個樹節(jié)點增加圖標(biāo)
過調(diào)用TreeItem對應(yīng)的構(gòu)造方法或使用setGraphic方法
根節(jié)點添加節(jié)點
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循環(huán)中創(chuàng)建的的TreeItem都通過調(diào)用getChildren和add方法被添加到了root節(jié)點上
在根節(jié)點對象上對setExpanded方法的調(diào)用定義了樹視圖的初始外觀卿城。默認(rèn)情況下所有的TreeItem實例是被折疊起來的枚钓,并且必須在必要時手工展開。如果在setExpanded方法調(diào)用時設(shè)置參數(shù)為true瑟押,這樣會在程序啟動時會自動展開根節(jié)點(要展開全部節(jié)點搀捷,每個TreeItem都要setExpanded為true)
-
TreeView
refresh刷新樹
setRoot設(shè)置樹節(jié)點
示例代碼
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();
}
}