/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.ecrsoft.common.javafx; import javafx.application.Application; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn.CellDataFeatures; import javafx.scene.control.TableView; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.control.TextField; import javafx.stage.Stage; import javafx.util.Callback; /** * * @author jjensen */ public class TableTest extends Application { public static void main( String[] args ) { Application.launch( TableTest.class, args ); } @Override public void start( Stage primaryStage ) { primaryStage.setTitle( "TableView Test" ); VBox vbox = new VBox( 5 ); vbox.setAlignment( Pos.CENTER); Scene scene = new Scene( vbox, 300, 300, Color.LIGHTGRAY ); final TableView tableView = new TableView( ); tableView.setColumnResizePolicy( TableView.CONSTRAINED_RESIZE_POLICY ); tableView.setPrefHeight( 200); tableView.setPrefWidth( 200 ); TableColumn columnA = new TableColumn( "Column A" ); columnA.setDataRetriever( new Callback( ) { @Override public Object call( Object param ) { return(( TestObject )(( CellDataFeatures )param ).getValue( )).a( ); } } ); TableColumn columnB = new TableColumn( "Column B" ); columnB.setDataRetriever( new Callback( ) { @Override public Object call( Object param ) { return(( TestObject )(( CellDataFeatures )param ).getValue( )).b( ); } } ); tableView.getColumns( ).setAll( columnA, columnB ); final CheckBox scrollToEnd = new CheckBox( "Scroll to End"); final TextField textField = new TextField( "10"); textField.setPromptText( "Items to Add"); Button addItems = new Button( "Add Items" ); addItems.setOnAction( new EventHandler( ) { @Override public void handle( ActionEvent event ) { int count = Integer.parseInt( textField.getText()); ObservableList list = tableView.getItems(); int i = 0; while( i < count * 2 ) { list.add( new TestObject( i++, i++ )); } if( scrollToEnd.isSelected()) { tableView.getSelectionModel().selectLast(); tableView.scrollTo( tableView.getItems().size() - 1); } } } ); Button clearItems = new Button( "Clear Items" ); clearItems.setOnAction( new EventHandler( ) { @Override public void handle( ActionEvent event ) { tableView.getItems().clear(); } } ); vbox.getChildren( ).setAll( tableView, scrollToEnd, textField, addItems, clearItems); primaryStage.setScene( scene ); primaryStage.setVisible( true ); } private static final class TestObject { private final int a; private final int b; public TestObject( int a, int b ) { this.a = a; this.b = b; } public int a( ) { return a; } public int b( ) { return b; } } }