Issue
Hi im trying to have text that has "children" text that can be sectioned off/hidden by pressing the arrow in the picture. So if the arrow points down it should open more information and if its point right it should close it. I don't know the name for this method or functionality so i dont know how to google the right class for this. It would be helpfull if someone could help and tell what javafx class is able to have this effect.
Sorry if the title is not good. I dont know the right word that im trying to achieve from the picture.
Solution
TreeView
You can use TreeView
like nested list in html.
When you initialize a TreeView object you need to provide generic type <t>
, <String>
in this case . then , every TreeView
needs a root you can pass a TreeItem object to Treeview in setRoot()
method. Root can have its own TreeItem children, every children can have children too , and so on.
a TreeItem
with no child is called "leaf" and TreeItems
with children is called "branch" . Like real tree .
This is a single javaFX app you can try
public class App extends Application {
@Override
public void start(Stage stage) {
TreeView<String> treeView = new TreeView<>();
TreeItem<String> rootItem = new TreeItem<>("lore ipsum");
treeView.setRoot(rootItem);
TreeItem<String> leafItem = new TreeItem<>("dolor sit amet, consectetur adipiscing elit");
TreeItem<String> leafItem1 = new TreeItem<>(" Aliquam justo ipsum, venenatis eget congue eu,");
TreeItem<String> leafItem2 = new TreeItem<>("imperdiet a augue. Mauris elementum risus leo");
TreeItem<String> leafItem3 = new TreeItem<>("id pharetra nulla mattis ut. Integer pulvinar nisl in velit ultrices");
TreeItem<String> leafItem4 = new TreeItem<>("ac semper ante porttitor. Aenean vel ligula ipsum. Lorem ipsum dolor sit amet,");
TreeItem<String> leafItem5 = new TreeItem<>("consectetur adipiscing elit. Mauris efficitur dapibus varius.");
TreeItem<String> leafItem6 = new TreeItem<>("nteger orci ipsum, egestas sed justo sit amet, fermentum semper libero. ");
TreeItem<String> branch = new TreeItem<>("lore ipsum II");
TreeItem<String> branch1 = new TreeItem<>("lore ipsum III");
TreeItem<String> branch2 = new TreeItem<>("lore ipsum IV");
rootItem.getChildren().addAll(leafItem, leafItem1, leafItem2, leafItem3, leafItem4, leafItem5, leafItem6, branch, branch1, branch2);
branch.getChildren().addAll(
new TreeItem<>("dolor sit amet, consectetur adipiscing elit"),
new TreeItem<>(" Aliquam justo ipsum, venenatis eget congue eu,"),
new TreeItem<>("imperdiet a augue. Mauris elementum risus leo"),
new TreeItem<>("id pharetra nulla mattis ut. Integer pulvinar nisl in velit ultrices"),
new TreeItem<>("ac semper ante porttitor. Aenean vel ligula ipsum. Lorem ipsum dolor sit amet,"),
new TreeItem<>("consectetur adipiscing elit. Mauris efficitur dapibus varius."),
new TreeItem<>("nteger orci ipsum, egestas sed justo sit amet, fermentum semper libero. "));
branch1.getChildren().addAll(
new TreeItem<>("dolor sit amet, consectetur adipiscing elit"),
new TreeItem<>(" Aliquam justo ipsum, venenatis eget congue eu,"),
new TreeItem<>("imperdiet a augue. Mauris elementum risus leo"),
new TreeItem<>("id pharetra nulla mattis ut. Integer pulvinar nisl in velit ultrices"),
new TreeItem<>("ac semper ante porttitor. Aenean vel ligula ipsum. Lorem ipsum dolor sit amet,"),
new TreeItem<>("consectetur adipiscing elit. Mauris efficitur dapibus varius."),
new TreeItem<>("nteger orci ipsum, egestas sed justo sit amet, fermentum semper libero. "));
branch2.getChildren().addAll(
new TreeItem<>("dolor sit amet, consectetur adipiscing elit"),
new TreeItem<>(" Aliquam justo ipsum, venenatis eget congue eu,"),
new TreeItem<>("imperdiet a augue. Mauris elementum risus leo"),
new TreeItem<>("id pharetra nulla mattis ut. Integer pulvinar nisl in velit ultrices"),
new TreeItem<>("ac semper ante porttitor. Aenean vel ligula ipsum. Lorem ipsum dolor sit amet,"),
new TreeItem<>("consectetur adipiscing elit. Mauris efficitur dapibus varius."),
new TreeItem<>("nteger orci ipsum, egestas sed justo sit amet, fermentum semper libero. "));
stage.setTitle("TreeView");
Scene scene = new Scene(treeView, 640, 480);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch();
}
}
Answered By - Giovanni Contreras
Answer Checked By - Robin (JavaFixing Admin)