Java examples for JavaFX:Table
Creating and Working with Tables
import javafx.application.Application; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.HPos; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.Tooltip; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.stage.Stage; import javafx.util.Callback; public class Main extends Application { public static void main(String[] args) { Application.launch(Main.class, args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Working with Tables"); Group root = new Group(); Scene scene = new Scene(root, 500, 250, Color.WHITE); // create a grid pane GridPane gridpane = new GridPane(); gridpane.setPadding(new Insets(5)); gridpane.setHgap(10); gridpane.setVgap(10); // candidates label Label candidatesLbl = new Label("Boss"); GridPane.setHalignment(candidatesLbl, HPos.CENTER); gridpane.add(candidatesLbl, 0, 0); // List of leaders ObservableList<Person> leaders = getPeople(); final ListView<Person> leaderListView = new ListView<>(leaders); leaderListView.setPrefWidth(150); leaderListView.setPrefHeight(150); // display first and last name with tooltip using alias leaderListView.setCellFactory((ListView<Person> param) -> { final Label leadLbl = new Label(); final Tooltip tooltip = new Tooltip(); final ListCell<Person> cell = new ListCell<Person>() { @Override public void updateItem(Person item, boolean empty) { super.updateItem(item, empty); if (item != null) { leadLbl.setText(item.getAliasName()); setText(item.getFirstName() + " " + item.getLastName()); tooltip.setText(item.getAliasName()); setTooltip(tooltip); } } }; // ListCell return cell; }); // setCellFactory gridpane.add(leaderListView, 0, 1); Label emplLbl = new Label("Employees"); gridpane.add(emplLbl, 2, 0); GridPane.setHalignment(emplLbl, HPos.CENTER); final TableView<Person> employeeTableView = new TableView<>(); employeeTableView.setPrefWidth(300); final ObservableList<Person> teamMembers = FXCollections.observableArrayList(); employeeTableView.setItems(teamMembers); TableColumn<Person, String> aliasNameCol = new TableColumn<>("Alias"); aliasNameCol.setEditable(true); aliasNameCol.setCellValueFactory(new PropertyValueFactory("aliasName")); aliasNameCol.setPrefWidth(employeeTableView.getPrefWidth() / 3); TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name"); firstNameCol.setCellValueFactory(new PropertyValueFactory("firstName")); firstNameCol.setPrefWidth(employeeTableView.getPrefWidth() / 3); TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name"); lastNameCol.setCellValueFactory(new PropertyValueFactory("lastName")); lastNameCol.setPrefWidth(employeeTableView.getPrefWidth() / 3); employeeTableView.getColumns().setAll(aliasNameCol, firstNameCol, lastNameCol); gridpane.add(employeeTableView, 2, 1); // selection listening leaderListView.getSelectionModel().selectedItemProperty().addListener( (ObservableValue<? extends Person> observable, Person oldValue, Person newValue) -> { if (observable != null && observable.getValue() != null) { teamMembers.clear(); teamMembers.addAll(observable.getValue().employeesProperty()); } }); root.getChildren().add(gridpane); primaryStage.setScene(scene); primaryStage.show(); } private ObservableList<Person> getPeople() { ObservableList<Person> people = FXCollections.<Person>observableArrayList(); Person docX = new Person("Professor X", "Charles", "Xavier"); docX.employeesProperty().add(new Person("A", "J", "H")); docX.employeesProperty().add(new Person("B", "S", "S")); docX.employeesProperty().add(new Person("C", "O", "M")); Person magneto = new Person("M", "A", "E"); magneto.employeesProperty().add(new Person("J", "C", "M")); magneto.employeesProperty().add(new Person("M", "R", "D")); magneto.employeesProperty().add(new Person("S", "V", "C")); Person biker = new Person("M", "J", "G"); biker.employeesProperty().add(new Person("J", "J", "J")); biker.employeesProperty().add(new Person("F", "F", "G")); biker.employeesProperty().add(new Person("M", "M", "B")); biker.employeesProperty().add(new Person("J", "J", "O")); biker.employeesProperty().add(new Person("D", "C", "D")); people.add(docX); people.add(magneto); people.add(biker); return people; } }
Person.java
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; public class Person { private StringProperty aliasName; private StringProperty firstName; private StringProperty lastName; private ObservableList<Person> employees = FXCollections.observableArrayList(); public final void setAliasName(String value) { aliasNameProperty().set(value);// w w w.j a v a 2 s .c om } public final String getAliasName() { return aliasNameProperty().get(); } public StringProperty aliasNameProperty() { if (aliasName == null) { aliasName = new SimpleStringProperty(); } return aliasName; } public final void setFirstName(String value) { firstNameProperty().set(value); } public final String getFirstName() { return firstNameProperty().get(); } public StringProperty firstNameProperty() { if (firstName == null) { firstName = new SimpleStringProperty(); } return firstName; } public final void setLastName(String value) { lastNameProperty().set(value); } public final String getLastName() { return lastNameProperty().get(); } public StringProperty lastNameProperty() { if (lastName == null) { lastName = new SimpleStringProperty(); } return lastName; } public ObservableList<Person> employeesProperty() { return employees; } public Person(String alias, String firstName, String lastName) { setAliasName(alias); setFirstName(firstName); setLastName(lastName); } }