- Type Parameters:
- S- The type of the TableView generic type (i.e. S == TableView<S>)
- T- The type of the content in all cells in this TableColumn.
- All Implemented Interfaces:
- Styleable,- EventTarget
public class TableColumn<S,T> extends TableColumnBase<S,T> implements EventTarget
TableView is made up of a number of TableColumn instances. Each
 TableColumn in a table is responsible for displaying (and editing) the contents
 of that column. As well as being responsible for displaying and editing data
 for a single column, a TableColumn also contains the necessary properties to:
 - Be resized (using minWidth/prefWidth/maxWidthandwidthproperties)
- Have its visibilitytoggled
- Display header text
- Display any nested columnsit may contain
- Have a context menuwhen the user right-clicks the column header area
- Have the contents of the table be sorted (using
      comparator,sortableandsortType)
text (what to show in the column
 header area), and the column cell value factory
 (which is used to populate individual cells in the column). This can be
 achieved using some variation on the following code:
 
 
 ObservableList<Person> data = ...
 TableView<Person> tableView = new TableView<Person>(data);
 TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
 firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
     public ObservableValue<String> call(CellDataFeatures<Person, String> p) {
         // p.getValue() returns the Person instance for a particular TableView row
         return p.getValue().firstNameProperty();
     }
  });
 
 tableView.getColumns().add(firstNameCol);}
 This approach assumes that the object returned from p.getValue()
 has a JavaFX ObservableValue that can simply be returned. The benefit of this
 is that the TableView will internally create bindings to ensure that,
 should the returned ObservableValue change, the cell contents will be
 automatically refreshed.
 In situations where a TableColumn must interact with classes created before
 JavaFX, or that generally do not wish to use JavaFX apis for properties, it is
 possible to wrap the returned value in a ReadOnlyObjectWrapper instance. For
 example:
 
 
 firstNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() {
     public ObservableValue<String> call(CellDataFeatures<Person, String> p) {
         return new ReadOnlyObjectWrapper(p.getValue().getFirstName());
     }
  });
 It is hoped that over time there will be convenience cell value factories
 developed and made available to developers. As of the JavaFX 2.0 release,
 there is one such convenience class: PropertyValueFactory. This class
 removes the need to write the code above, instead relying on reflection to
 look up a given property from a String. Refer to the
 PropertyValueFactory class documentation for more information
 on how to use this with a TableColumn.
 Finally, for more detail on how to use TableColumn, there is further documentation in
 the TableView class documentation.- Since:
- JavaFX 2.0
- See Also:
- TableView,- TableCell,- TablePosition
- 
Property SummaryProperties Type Property Description ObjectProperty<Callback<TableColumn<S,T>,TableCell<S,T>>>cellFactoryThe cell factory for all cells in this column.ObjectProperty<Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>>cellValueFactoryThe cell value factory needs to be set to specify how to populate all cells within a single TableColumn.ObjectProperty<EventHandler<TableColumn.CellEditEvent<S,T>>>onEditCancelThis event handler will be fired when the user cancels editing a cell.ObjectProperty<EventHandler<TableColumn.CellEditEvent<S,T>>>onEditCommitThis event handler will be fired when the user successfully commits their editing.ObjectProperty<EventHandler<TableColumn.CellEditEvent<S,T>>>onEditStartThis event handler will be fired when the user successfully initiates editing.ObjectProperty<TableColumn.SortType>sortTypeUsed to state whether this column, if it is part of a sort order (seeTableView.getSortOrder()for more details), should be sorted in ascending or descending order.ReadOnlyObjectProperty<TableView<S>>tableViewThe TableView that this TableColumn belongs to.Properties declared in class javafx.scene.control.TableColumnBasecomparator, contextMenu, editable, graphic, id, maxWidth, minWidth, parentColumn, prefWidth, reorderable, resizable, sortable, sortNode, style, text, visible, width
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static classTableColumn.CellDataFeatures<S,T>A support class used in TableColumn as a wrapper class to provide all necessary information for a particularCell.static classTableColumn.CellEditEvent<S,T>An event that is fired when a user performs an edit on a table cell.static classTableColumn.SortTypeEnumeration that specifies the type of sorting being applied to a specific column.
- 
Field SummaryFields Modifier and Type Field Description static Callback<TableColumn<?,?>,TableCell<?,?>>DEFAULT_CELL_FACTORYIf no cellFactory is specified on a TableColumn instance, then this one will be used by default.Fields declared in class javafx.scene.control.TableColumnBaseDEFAULT_COMPARATOR
- 
Constructor SummaryConstructors Constructor Description TableColumn()Creates a default TableColumn with default cell factory, comparator, and onEditCommit implementation.TableColumn(String text)Creates a TableColumn with the text set to the provided string, with default cell factory, comparator, and onEditCommit implementation.
- 
Method SummaryModifier and Type Method Description ObjectProperty<Callback<TableColumn<S,T>,TableCell<S,T>>>cellFactoryProperty()The cell factory for all cells in this column.ObjectProperty<Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>>cellValueFactoryProperty()The cell value factory needs to be set to specify how to populate all cells within a single TableColumn.static <S, T> EventType<TableColumn.CellEditEvent<S,T>>editAnyEvent()Parent event for any TableColumn edit event.static <S, T> EventType<TableColumn.CellEditEvent<S,T>>editCancelEvent()Indicates that the editing has been canceled, meaning that no change should be made to the backing data source.static <S, T> EventType<TableColumn.CellEditEvent<S,T>>editCommitEvent()Indicates that the editing has been committed by the user, meaning that a change should be made to the backing data source to reflect the new data.static <S, T> EventType<TableColumn.CellEditEvent<S,T>>editStartEvent()Indicates that the user has performed some interaction to start an edit event, or alternatively theTableView.edit(int, javafx.scene.control.TableColumn)method has been called.Callback<TableColumn<S,T>,TableCell<S,T>>getCellFactory()Gets the value of the property cellFactory.Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>getCellValueFactory()Gets the value of the property cellValueFactory.static List<CssMetaData<? extends Styleable,?>>getClassCssMetaData()List<CssMetaData<? extends Styleable,?>>getCssMetaData()The CssMetaData of this Styleable.EventHandler<TableColumn.CellEditEvent<S,T>>getOnEditCancel()Gets the value of the property onEditCancel.EventHandler<TableColumn.CellEditEvent<S,T>>getOnEditCommit()Gets the value of the property onEditCommit.EventHandler<TableColumn.CellEditEvent<S,T>>getOnEditStart()Gets the value of the property onEditStart.TableColumn.SortTypegetSortType()Gets the value of the property sortType.StyleablegetStyleableParent()Return the parent of this Styleable, or null if there is no parent.TableView<S>getTableView()Gets the value of the property tableView.StringgetTypeSelector()The type of thisStyleablethat is to be used in selector matching.ObjectProperty<EventHandler<TableColumn.CellEditEvent<S,T>>>onEditCancelProperty()This event handler will be fired when the user cancels editing a cell.ObjectProperty<EventHandler<TableColumn.CellEditEvent<S,T>>>onEditCommitProperty()This event handler will be fired when the user successfully commits their editing.ObjectProperty<EventHandler<TableColumn.CellEditEvent<S,T>>>onEditStartProperty()This event handler will be fired when the user successfully initiates editing.voidsetCellFactory(Callback<TableColumn<S,T>,TableCell<S,T>> value)Sets the value of the property cellFactory.voidsetCellValueFactory(Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>> value)Sets the value of the property cellValueFactory.voidsetOnEditCancel(EventHandler<TableColumn.CellEditEvent<S,T>> value)Sets the value of the property onEditCancel.voidsetOnEditCommit(EventHandler<TableColumn.CellEditEvent<S,T>> value)Sets the value of the property onEditCommit.voidsetOnEditStart(EventHandler<TableColumn.CellEditEvent<S,T>> value)Sets the value of the property onEditStart.voidsetSortType(TableColumn.SortType value)Sets the value of the property sortType.ObjectProperty<TableColumn.SortType>sortTypeProperty()Used to state whether this column, if it is part of a sort order (seeTableView.getSortOrder()for more details), should be sorted in ascending or descending order.ReadOnlyObjectProperty<TableView<S>>tableViewProperty()The TableView that this TableColumn belongs to.Methods declared in class javafx.scene.control.TableColumnBaseaddEventHandler, comparatorProperty, contextMenuProperty, editableProperty, getCellData, getCellData, getCellObservableValue, getCellObservableValue, getColumns, getComparator, getContextMenu, getGraphic, getMaxWidth, getMinWidth, getParentColumn, getPrefWidth, getProperties, getSortNode, getStyleClass, getText, getUserData, getWidth, graphicProperty, hasProperties, idProperty, isEditable, isReorderable, isResizable, isSortable, isVisible, maxWidthProperty, minWidthProperty, parentColumnProperty, prefWidthProperty, removeEventHandler, reorderableProperty, resizableProperty, setComparator, setContextMenu, setEditable, setGraphic, setId, setMaxWidth, setMinWidth, setPrefWidth, setReorderable, setResizable, setSortable, setSortNode, setStyle, setText, setUserData, setVisible, sortableProperty, sortNodeProperty, styleProperty, textProperty, visibleProperty, widthPropertyMethods declared in class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods declared in interface javafx.event.EventTargetbuildEventDispatchChainMethods declared in interface javafx.css.StyleablegetId, getPseudoClassStates, getStyle, getStyleableNode
- 
Property Details- 
tableViewThe TableView that this TableColumn belongs to.- See Also:
- getTableView()
 
- 
cellValueFactorypublic final ObjectProperty<Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>> cellValueFactoryPropertyThe cell value factory needs to be set to specify how to populate all cells within a single TableColumn. A cell value factory is aCallbackthat provides aTableColumn.CellDataFeaturesinstance, and expects anObservableValueto be returned. The returned ObservableValue instance will be observed internally to allow for immediate updates to the value to be reflected on screen. An example of how to set a cell value factory is:
 A common approach is to want to populate cells in a TableColumn using a single value from a Java bean. To support this common scenario, there is thelastNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the Person instance for a particular TableView row return p.getValue().lastNameProperty(); } }); }PropertyValueFactoryclass. Refer to this class for more information on how to use it, but briefly here is how the above use case could be simplified using the PropertyValueFactory class:lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
- 
cellFactoryThe cell factory for all cells in this column. The cell factory is responsible for rendering the data contained within eachTableCellfor a single table column.By default, TableColumnuses thedefault cell factory, but this can be replaced with a custom implementation, for example, to show data in a different way or to support editing. There is a lot of documentation on creating custom cell factories elsewhere (seeCellandTableViewfor example).Finally, there are a number of pre-built cell factories available in the javafx.scene.control.cellpackage.- See Also:
- getCellFactory(),- setCellFactory(Callback)
 
- 
sortTypeUsed to state whether this column, if it is part of a sort order (seeTableView.getSortOrder()for more details), should be sorted in ascending or descending order. Simply toggling this property will result in the sort order changing in the TableView, assuming of course that this column is in the sortOrder ObservableList to begin with.- See Also:
- getSortType(),- setSortType(TableColumn.SortType)
 
- 
onEditStartThis event handler will be fired when the user successfully initiates editing.- See Also:
- getOnEditStart(),- setOnEditStart(EventHandler)
 
- 
onEditCommitThis event handler will be fired when the user successfully commits their editing.- See Also:
- getOnEditCommit(),- setOnEditCommit(EventHandler)
 
- 
onEditCancelThis event handler will be fired when the user cancels editing a cell.- See Also:
- getOnEditCancel(),- setOnEditCancel(EventHandler)
 
 
- 
- 
Field Details- 
DEFAULT_CELL_FACTORYIf no cellFactory is specified on a TableColumn instance, then this one will be used by default. At present it simply renders the TableCell item property within thegraphicproperty if theitemis a Node, or it simply callstoString()if it is not null, setting the resulting string inside thetextproperty.
 
- 
- 
Constructor Details- 
TableColumnpublic TableColumn()Creates a default TableColumn with default cell factory, comparator, and onEditCommit implementation.
- 
TableColumnCreates a TableColumn with the text set to the provided string, with default cell factory, comparator, and onEditCommit implementation.- Parameters:
- text- The string to show when the TableColumn is placed within the TableView.
 
 
- 
- 
Method Details- 
editAnyEventParent event for any TableColumn edit event.- Type Parameters:
- S- The type of the TableView generic type
- T- The type of the content in all cells in this TableColumn
- Returns:
- The any TableColumn edit event
 
- 
editStartEventIndicates that the user has performed some interaction to start an edit event, or alternatively theTableView.edit(int, javafx.scene.control.TableColumn)method has been called.- Type Parameters:
- S- The type of the TableView generic type
- T- The type of the content in all cells in this TableColumn
- Returns:
- The start an edit event
 
- 
editCancelEventIndicates that the editing has been canceled, meaning that no change should be made to the backing data source.- Type Parameters:
- S- The type of the TableView generic type
- T- The type of the content in all cells in this TableColumn
- Returns:
- The cancel an edit event
 
- 
editCommitEventIndicates that the editing has been committed by the user, meaning that a change should be made to the backing data source to reflect the new data.- Type Parameters:
- S- The type of the TableView generic type
- T- The type of the content in all cells in this TableColumn
- Returns:
- The commit an edit event
 
- 
tableViewPropertyThe TableView that this TableColumn belongs to.- See Also:
- getTableView()
 
- 
getTableViewGets the value of the property tableView.- Property description:
- The TableView that this TableColumn belongs to.
 
- 
setCellValueFactorypublic final void setCellValueFactory(Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>> value)Sets the value of the property cellValueFactory.- Property description:
- The cell value factory needs to be set to specify how to populate all
 cells within a single TableColumn. A cell value factory is a Callbackthat provides aTableColumn.CellDataFeaturesinstance, and expects anObservableValueto be returned. The returned ObservableValue instance will be observed internally to allow for immediate updates to the value to be reflected on screen. An example of how to set a cell value factory is:
 A common approach is to want to populate cells in a TableColumn using a single value from a Java bean. To support this common scenario, there is thelastNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the Person instance for a particular TableView row return p.getValue().lastNameProperty(); } }); }PropertyValueFactoryclass. Refer to this class for more information on how to use it, but briefly here is how the above use case could be simplified using the PropertyValueFactory class:lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
 
- 
getCellValueFactoryGets the value of the property cellValueFactory.- Property description:
- The cell value factory needs to be set to specify how to populate all
 cells within a single TableColumn. A cell value factory is a Callbackthat provides aTableColumn.CellDataFeaturesinstance, and expects anObservableValueto be returned. The returned ObservableValue instance will be observed internally to allow for immediate updates to the value to be reflected on screen. An example of how to set a cell value factory is:
 A common approach is to want to populate cells in a TableColumn using a single value from a Java bean. To support this common scenario, there is thelastNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the Person instance for a particular TableView row return p.getValue().lastNameProperty(); } }); }PropertyValueFactoryclass. Refer to this class for more information on how to use it, but briefly here is how the above use case could be simplified using the PropertyValueFactory class:lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
 
- 
cellValueFactoryPropertypublic final ObjectProperty<Callback<TableColumn.CellDataFeatures<S,T>,ObservableValue<T>>> cellValueFactoryProperty()The cell value factory needs to be set to specify how to populate all cells within a single TableColumn. A cell value factory is aCallbackthat provides aTableColumn.CellDataFeaturesinstance, and expects anObservableValueto be returned. The returned ObservableValue instance will be observed internally to allow for immediate updates to the value to be reflected on screen. An example of how to set a cell value factory is:
 A common approach is to want to populate cells in a TableColumn using a single value from a Java bean. To support this common scenario, there is thelastNameCol.setCellValueFactory(new Callback<CellDataFeatures<Person, String>, ObservableValue<String>>() { public ObservableValue<String> call(CellDataFeatures<Person, String> p) { // p.getValue() returns the Person instance for a particular TableView row return p.getValue().lastNameProperty(); } }); }PropertyValueFactoryclass. Refer to this class for more information on how to use it, but briefly here is how the above use case could be simplified using the PropertyValueFactory class:lastNameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("lastName"));
- 
setCellFactorySets the value of the property cellFactory.- Property description:
- The cell factory for all cells in this column. The cell factory
 is responsible for rendering the data contained within each TableCellfor a single table column.By default, TableColumnuses thedefault cell factory, but this can be replaced with a custom implementation, for example, to show data in a different way or to support editing. There is a lot of documentation on creating custom cell factories elsewhere (seeCellandTableViewfor example).Finally, there are a number of pre-built cell factories available in the javafx.scene.control.cellpackage.
 
- 
getCellFactoryGets the value of the property cellFactory.- Property description:
- The cell factory for all cells in this column. The cell factory
 is responsible for rendering the data contained within each TableCellfor a single table column.By default, TableColumnuses thedefault cell factory, but this can be replaced with a custom implementation, for example, to show data in a different way or to support editing. There is a lot of documentation on creating custom cell factories elsewhere (seeCellandTableViewfor example).Finally, there are a number of pre-built cell factories available in the javafx.scene.control.cellpackage.
 
- 
cellFactoryPropertyThe cell factory for all cells in this column. The cell factory is responsible for rendering the data contained within eachTableCellfor a single table column.By default, TableColumnuses thedefault cell factory, but this can be replaced with a custom implementation, for example, to show data in a different way or to support editing. There is a lot of documentation on creating custom cell factories elsewhere (seeCellandTableViewfor example).Finally, there are a number of pre-built cell factories available in the javafx.scene.control.cellpackage.- See Also:
- getCellFactory(),- setCellFactory(Callback)
 
- 
sortTypePropertyUsed to state whether this column, if it is part of a sort order (seeTableView.getSortOrder()for more details), should be sorted in ascending or descending order. Simply toggling this property will result in the sort order changing in the TableView, assuming of course that this column is in the sortOrder ObservableList to begin with.- See Also:
- getSortType(),- setSortType(TableColumn.SortType)
 
- 
setSortTypeSets the value of the property sortType.- Property description:
- Used to state whether this column, if it is part of a sort order (see
 TableView.getSortOrder()for more details), should be sorted in ascending or descending order. Simply toggling this property will result in the sort order changing in the TableView, assuming of course that this column is in the sortOrder ObservableList to begin with.
 
- 
getSortTypeGets the value of the property sortType.- Property description:
- Used to state whether this column, if it is part of a sort order (see
 TableView.getSortOrder()for more details), should be sorted in ascending or descending order. Simply toggling this property will result in the sort order changing in the TableView, assuming of course that this column is in the sortOrder ObservableList to begin with.
 
- 
setOnEditStartSets the value of the property onEditStart.- Property description:
- This event handler will be fired when the user successfully initiates editing.
 
- 
getOnEditStartGets the value of the property onEditStart.- Property description:
- This event handler will be fired when the user successfully initiates editing.
 
- 
onEditStartPropertyThis event handler will be fired when the user successfully initiates editing.- See Also:
- getOnEditStart(),- setOnEditStart(EventHandler)
 
- 
setOnEditCommitSets the value of the property onEditCommit.- Property description:
- This event handler will be fired when the user successfully commits their editing.
 
- 
getOnEditCommitGets the value of the property onEditCommit.- Property description:
- This event handler will be fired when the user successfully commits their editing.
 
- 
onEditCommitPropertyThis event handler will be fired when the user successfully commits their editing.- See Also:
- getOnEditCommit(),- setOnEditCommit(EventHandler)
 
- 
setOnEditCancelSets the value of the property onEditCancel.- Property description:
- This event handler will be fired when the user cancels editing a cell.
 
- 
getOnEditCancelGets the value of the property onEditCancel.- Property description:
- This event handler will be fired when the user cancels editing a cell.
 
- 
onEditCancelPropertyThis event handler will be fired when the user cancels editing a cell.- See Also:
- getOnEditCancel(),- setOnEditCancel(EventHandler)
 
- 
getTypeSelectorThe type of thisStyleablethat is to be used in selector matching. This is analogous to an "element" in HTML. (CSS Type Selector).- Specified by:
- getTypeSelectorin interface- Styleable
- Returns:
- "TableColumn"
- Since:
- JavaFX 8.0
 
- 
getStyleableParentReturn the parent of this Styleable, or null if there is no parent.- Specified by:
- getStyleableParentin interface- Styleable
- Returns:
- getTableView()
- Since:
- JavaFX 8.0
 
- 
getCssMetaDataThe CssMetaData of this Styleable. This may be returned as an unmodifiable list.- Specified by:
- getCssMetaDatain interface- Styleable
- Returns:
- the CssMetaData
- Since:
- JavaFX 8.0
 
- 
getClassCssMetaData- Returns:
- The CssMetaData associated with this class, which may include the CssMetaData of its superclasses.
- Since:
- JavaFX 8.0
 
 
-