/* * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. */ package tests; import javafx.application.Application; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.beans.value.ObservableValue; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.control.cell.TextFieldTreeTableCell; import javafx.stage.Stage; import javafx.util.Callback; import javafx.util.StringConverter; import javafx.util.converter.DefaultStringConverter; /** * * @author slions */ public class Test extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { final TreeItem rootItem = new TreeItem<>("Root"); final TreeItem child1Item = new TreeItem<>("Child1"); final TreeItem child2Item = new TreeItem<>("Child2"); rootItem.setExpanded(true); rootItem.getChildren().addAll(child1Item, child2Item); // Class name column final TreeTableColumn classNameColumn = new TreeTableColumn<>("Class Name"); classNameColumn.setEditable(false); classNameColumn.setMinWidth(150); classNameColumn.setCellValueFactory(new Callback, ObservableValue>() { @Override public ObservableValue call(TreeTableColumn.CellDataFeatures p) { final String value = p.getValue().getValue(); return new ReadOnlyStringWrapper(value); } }); // Info column final TreeTableColumn infoColumn = new TreeTableColumn<>("Info"); infoColumn.setEditable(true); infoColumn.setMinWidth(150); infoColumn.setCellValueFactory(new Callback, ObservableValue>() { @Override public ObservableValue call(TreeTableColumn.CellDataFeatures p) { final String value = p.getValue().getValue(); return new ReadOnlyStringWrapper(value); } }); infoColumn.setOnEditCommit(new EventHandler>() { @Override public void handle(TreeTableColumn.CellEditEvent t) { System.out.println(">>> infoColumn.setOnEditCommit handler called"); } }); infoColumn.setCellFactory(new Callback, TreeTableCell>() { @Override public TreeTableCell call(TreeTableColumn p) { return new TextFieldTreeTableCell(new DefaultStringConverter()); } }); final TreeTableView treeTableView = new TreeTableView(rootItem); treeTableView.setEditable(true); treeTableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); treeTableView.setPrefSize(300, 300); treeTableView.setLayoutX(10); treeTableView.setLayoutY(10); treeTableView.getColumns().setAll(classNameColumn, infoColumn); final Scene scene = new Scene(new Group(), 800, 500); final Group root = (Group) scene.getRoot(); root.getChildren().clear(); root.getChildren().addAll(treeTableView); primaryStage.setScene(scene); primaryStage.show(); } }