Monday 18 June 2018

JavaFX: TreeTableView: Hide the root element

By using 'setShowRoot' method of TreeTableView widget, you can hide/show the root element.

Ex
treeTableView.setShowRoot(false);

If you enable the root element for TreeTableView widget, the output looks like below.



If you disable the root element, you can able to see below widget.



Find the below working application.

Friend.java
package com.sample.model;

public class Friend {
 private String firstName;
 private String lastName;
 private String email;

 public Friend(String fName, String lName, String email) {
  this.firstName = fName;
  this.lastName = lName;
  this.email = email;
 }

 public String getFirstName() {
  return firstName;
 }

 public String getLastName() {
  return lastName;
 }

 public String getEmail() {
  return email;
 }

 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }

 public void setLastName(String lastName) {
  this.lastName = lastName;
 }

 public void setEmail(String email) {
  this.email = email;
 }

}

TreeTableViewApp.java
package com.sample.demos;

import java.util.Arrays;
import java.util.List;

import com.sample.model.Friend;

import javafx.application.Application;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.scene.Scene;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeTableColumn;
import javafx.scene.control.TreeTableView;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class TreeTableViewApp extends Application {

 List<Friend> friends = Arrays.asList(new Friend("Hari", "Krishna", "krishna@krishna.com"),
   new Friend("Bhairava", "beddu", "bhairava@bhairava.com"),
   new Friend("ahswani", "sharmaSekar", "ashwani@ashwani.com"),
   new Friend("chandra", "babu", "chandra@babu.com"));

 @SuppressWarnings("unchecked")
 @Override
 public void start(Stage primaryStage) throws Exception {

  /* Define Root Item */
  TreeItem<Friend> rootItem = new TreeItem<>(new Friend("All My Friend list", "", ""));
  rootItem.setExpanded(true);

  friends.stream().forEach((friend) -> {
   rootItem.getChildren().add(new TreeItem<>(friend));
  });

  TreeTableView<Friend> treeTableView = new TreeTableView<>(rootItem);

  TreeTableColumn<Friend, String> firstNameColumn = new TreeTableColumn<>("First Name");
  firstNameColumn.setPrefWidth(150);
  firstNameColumn.setCellValueFactory(
    (TreeTableColumn.CellDataFeatures<Friend, String> param) -> new ReadOnlyStringWrapper(
      param.getValue().getValue().getFirstName()));

  TreeTableColumn<Friend, String> lastNameColumn = new TreeTableColumn<>("Last Name");
  lastNameColumn.setPrefWidth(150);
  lastNameColumn.setCellValueFactory(
    (TreeTableColumn.CellDataFeatures<Friend, String> param) -> new ReadOnlyStringWrapper(
      param.getValue().getValue().getLastName()));

  TreeTableColumn<Friend, String> emailColumn = new TreeTableColumn<>("Email");
  emailColumn.setPrefWidth(150);
  emailColumn.setCellValueFactory(
    (TreeTableColumn.CellDataFeatures<Friend, String> param) -> new ReadOnlyStringWrapper(
      param.getValue().getValue().getEmail()));

  treeTableView.getColumns().addAll(firstNameColumn, lastNameColumn, emailColumn);
  treeTableView.setPrefWidth(250);
  treeTableView.setShowRoot(false);
  treeTableView.setTableMenuButtonVisible(true);

  StackPane stackPane = new StackPane();
  stackPane.getChildren().add(treeTableView);

  primaryStage.setScene(new Scene(stackPane));
  primaryStage.setTitle("Tree Table View Example");
  primaryStage.setWidth(900);
  primaryStage.setHeight(500);
  primaryStage.show();
 }

}

TestFX.java
package com.sample.demos;

import javafx.application.Application;

public class TestFX {
 public static void main(String args[]) {
  Application.launch(TreeTableViewApp.class, args);
 }
}






Previous                                                 Next                                                 Home

No comments:

Post a Comment