# Class TableColumnBase<S,T>

java.lang.Object
javafx.scene.control.TableColumnBase<S,T>

Type Parameters:
  `S` - The type of the UI control (e.g. the type of the 'row').
  `T` - The type of the content in all cells in this table column.

All Implemented Interfaces:
  `Styleable`, `EventTarget`

Direct Known Subclasses:
  `TableColumn`, `TreeTableColumn`

@IDProperty("id") public abstract class TableColumnBase<S,T> extends Object implements EventTarget, Styleable
Table-like controls (such as `TableView` and `TreeTableView`) are made up of zero or more instances of a concrete TableColumnBase subclass (`TableColumn` and `TreeTableColumn`, respectively). Each table column 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 table column also contains the necessary properties to:

- Be resized (using `minWidth`/`prefWidth`/`maxWidth` and `width` properties)
- Have its `visibility` toggled
- Display `header text`
- Display any `nested columns` it may contain
- Have a `context menu` when the user right-clicks the column header area
- Have the contents of the table be sorted (using `comparator`, `sortable` and sortType).

When instantiating a concrete subclass of TableColumnBase, perhaps the two most important properties to set are the column `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). Refer to the class documentation for `TableColumn` and `TreeTableColumn` for more information.

Since:
  JavaFX 8.0
See Also:
  - `TableColumn`
  - `TreeTableColumn`
  - `TablePositionBase`

- ## Property Summary

  Properties
  Type
  Property
  Description
  `final ObjectProperty<Comparator<T>>`
  `comparator`
  Comparator function used when sorting this table column.
  `final ObjectProperty<ContextMenu>`
  `contextMenu`
  This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.
  `final BooleanProperty`
  `editable`
  Specifies whether this table column allows editing.
  `final ObjectProperty<Node>`
  `graphic`
  The graphic to show in the table column to allow the user to indicate graphically what is in the column.
  `final StringProperty`
  `id`
  The id of this TableColumnBase.
  `final DoubleProperty`
  `maxWidth`
  The maximum width the table column is permitted to be resized to.
  `final DoubleProperty`
  `minWidth`
  The minimum width the table column is permitted to be resized to.
  `final ReadOnlyObjectProperty<TableColumnBase<S,?>>`
  `parentColumn`
  This read-only property will always refer to the parent of this column, in the situation where nested columns are being used.
  `final DoubleProperty`
  `prefWidth`
  The preferred width of the TableColumn.
  `final BooleanProperty`
  `reorderable`
  A boolean property to toggle on and off the 'reorderability' of this column (with drag and drop - reordering by modifying the appropriate `columns` list is always allowed).
  `final BooleanProperty`
  `resizable`
  Used to indicate whether the width of this column can change.
  `final BooleanProperty`
  `sortable`
  A boolean property to toggle on and off the 'sortability' of this column.
  `final ObjectProperty<Node>`
  `sortNode`
  The node to use as the "sort arrow", shown to the user in situations where the table column is part of the sort order.
  `final StringProperty`
  `style`
  A string representation of the CSS style associated with this TableColumnBase instance.
  `final StringProperty`
  `text`
  This is the text to show in the header for this column.
  `final BooleanProperty`
  `visible`
  Toggling this will immediately toggle the visibility of this column, and all children columns.
  `final ReadOnlyDoubleProperty`
  `width`
  The width of this column.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final Comparator`
  `DEFAULT_COMPARATOR`
  By default all columns will use this comparator to perform sorting.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `TableColumnBase()`
  Creates a default TableColumn with default cell factory, comparator, and onEditCommit implementation.
  `protected`
  `TableColumnBase(String text)`
  Creates a TableColumn with the text set to the provided string, with default cell factory, comparator, and onEditCommit implementation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `EventDispatchChain`
  `buildEventDispatchChain(EventDispatchChain tail)`
  Construct an event dispatch chain for this target.
  `final ObjectProperty<Comparator<T>>`
  `comparatorProperty()`
  Comparator function used when sorting this table column.
  `final ObjectProperty<ContextMenu>`
  `contextMenuProperty()`
  This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.
  `final BooleanProperty`
  `editableProperty()`
  Specifies whether this table column allows editing.
  `final T`
  `getCellData(int index)`
  Returns the actual value for a cell at a given row index (and which belongs to this table column).
  `final T`
  `getCellData(S item)`
  Returns the actual value for a cell from the given item.
  `abstract ObservableValue<T>`
  `getCellObservableValue(int index)`
  Attempts to return an ObservableValue<T> for the item in the given index (which is of type S).
  `abstract ObservableValue<T>`
  `getCellObservableValue(S item)`
  Attempts to return an ObservableValue<T> for the given item (which is of type S).
  `abstract ObservableList<? extends TableColumnBase<S,?>>`
  `getColumns()`
  This enables support for nested columns, which can be useful to group together related data.
  `final Comparator<T>`
  `getComparator()`
  Gets the value of the `comparator` property.
  `final ContextMenu`
  `getContextMenu()`
  Gets the value of the `contextMenu` property.
  `final Node`
  `getGraphic()`
  Gets the value of the `graphic` property.
  `final String`
  `getId()`
  Gets the value of the `id` property.
  `final double`
  `getMaxWidth()`
  Gets the value of the `maxWidth` property.
  `final double`
  `getMinWidth()`
  Gets the value of the `minWidth` property.
  `final TableColumnBase<S,?>`
  `getParentColumn()`
  Gets the value of the `parentColumn` property.
  `final double`
  `getPrefWidth()`
  Gets the value of the `prefWidth` property.
  `final ObservableMap<Object,Object>`
  `getProperties()`
  Returns an observable map of properties on this table column for use primarily by application developers.
  `final ObservableSet<PseudoClass>`
  `getPseudoClassStates()`
  Return the pseudo-class state of this Styleable.
  `final Node`
  `getSortNode()`
  Gets the value of the `sortNode` property.
  `final String`
  `getStyle()`
  Gets the value of the `style` property.
  `ObservableList<String>`
  `getStyleClass()`
  A list of String identifiers which can be used to logically group Nodes, specifically for an external style engine.
  `final String`
  `getText()`
  Gets the value of the `text` property.
  `Object`
  `getUserData()`
  Returns a previously set Object property, or null if no such property has been set using the `setUserData(java.lang.Object)` method.
  `final double`
  `getWidth()`
  Gets the value of the `width` property.
  `final ObjectProperty<Node>`
  `graphicProperty()`
  The graphic to show in the table column to allow the user to indicate graphically what is in the column.
  `boolean`
  `hasProperties()`
  Tests if this table column has properties.
  `final StringProperty`
  `idProperty()`
  The id of this TableColumnBase.
  `final boolean`
  `isEditable()`
  Gets the value of the `editable` property.
  `final boolean`
  `isReorderable()`
  Gets the value of the `reorderable` property.
  `final boolean`
  `isResizable()`
  Gets the value of the `resizable` property.
  `final boolean`
  `isSortable()`
  Gets the value of the `sortable` property.
  `final boolean`
  `isVisible()`
  Gets the value of the `visible` property.
  `final DoubleProperty`
  `maxWidthProperty()`
  The maximum width the table column is permitted to be resized to.
  `final DoubleProperty`
  `minWidthProperty()`
  The minimum width the table column is permitted to be resized to.
  `final ReadOnlyObjectProperty<TableColumnBase<S,?>>`
  `parentColumnProperty()`
  This read-only property will always refer to the parent of this column, in the situation where nested columns are being used.
  `final DoubleProperty`
  `prefWidthProperty()`
  The preferred width of the TableColumn.
  `final BooleanProperty`
  `reorderableProperty()`
  A boolean property to toggle on and off the 'reorderability' of this column (with drag and drop - reordering by modifying the appropriate `columns` list is always allowed).
  `final BooleanProperty`
  `resizableProperty()`
  Used to indicate whether the width of this column can change.
  `final void`
  `setComparator(Comparator<T> value)`
  Sets the value of the `comparator` property.
  `final void`
  `setContextMenu(ContextMenu value)`
  Sets the value of the `contextMenu` property.
  `final void`
  `setEditable(boolean value)`
  Sets the value of the `editable` property.
  `final void`
  `setGraphic(Node value)`
  Sets the value of the `graphic` property.
  `final void`
  `setId(String value)`
  Sets the value of the `id` property.
  `final void`
  `setMaxWidth(double value)`
  Sets the value of the `maxWidth` property.
  `final void`
  `setMinWidth(double value)`
  Sets the value of the `minWidth` property.
  `final void`
  `setPrefWidth(double value)`
  Sets the value of the `prefWidth` property.
  `final void`
  `setReorderable(boolean value)`
  Sets the value of the `reorderable` property.
  `final void`
  `setResizable(boolean value)`
  Sets the value of the `resizable` property.
  `final void`
  `setSortable(boolean value)`
  Sets the value of the `sortable` property.
  `final void`
  `setSortNode(Node value)`
  Sets the value of the `sortNode` property.
  `final void`
  `setStyle(String value)`
  Sets the value of the `style` property.
  `final void`
  `setText(String value)`
  Sets the value of the `text` property.
  `void`
  `setUserData(Object value)`
  Convenience method for setting a single Object property that can be retrieved at a later date.
  `final void`
  `setVisible(boolean value)`
  Sets the value of the `visible` property.
  `final BooleanProperty`
  `sortableProperty()`
  A boolean property to toggle on and off the 'sortability' of this column.
  `final ObjectProperty<Node>`
  `sortNodeProperty()`
  The node to use as the "sort arrow", shown to the user in situations where the table column is part of the sort order.
  `final StringProperty`
  `styleProperty()`
  A string representation of the CSS style associated with this TableColumnBase instance.
  `final StringProperty`
  `textProperty()`
  This is the text to show in the header for this column.
  `final BooleanProperty`
  `visibleProperty()`
  Toggling this will immediately toggle the visibility of this column, and all children columns.
  `final ReadOnlyDoubleProperty`
  `widthProperty()`
  The width of this column.

  ### Methods declared in class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods declared in interface javafx.event.EventTarget

  `addEventFilter, addEventHandler, removeEventFilter, removeEventHandler`

  ### Methods declared in interface javafx.css.Styleable

  `getCssMetaData, getStyleableNode, getStyleableParent, getTypeSelector`

- ## Property Details

  - ### text

    public final StringProperty textProperty
    This is the text to show in the header for this column.
    See Also:
      - `getText()`
      - `setText(String)`
      - `textProperty()`

  - ### visible

    public final BooleanProperty visibleProperty
    Toggling this will immediately toggle the visibility of this column, and all children columns.
    See Also:
      - `isVisible()`
      - `setVisible(boolean)`
      - `visibleProperty()`

  - ### parentColumn

    public final ReadOnlyObjectProperty<TableColumnBase<S,?>> parentColumnProperty
    This read-only property will always refer to the parent of this column, in the situation where nested columns are being used.

    In the currently existing subclasses, to create a nested column is simply a matter of placing the relevant TableColumnBase instances inside the columns ObservableList (for example, see `TableColumn.getColumns()` and `TreeTableColumn.getColumns()`.

    See Also:
      - `getParentColumn()`
      - `parentColumnProperty()`

  - ### contextMenu

    public final ObjectProperty<ContextMenu> contextMenuProperty
    This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.
    See Also:
      - `getContextMenu()`
      - `setContextMenu(ContextMenu)`
      - `contextMenuProperty()`

  - ### id

    public final StringProperty idProperty
    The id of this TableColumnBase. This simple string identifier is useful for finding a specific TableColumnBase within a UI control that uses TableColumnBase instances. The default value is `null`.
    Default value:
      null
    See Also:
      - `getId()`
      - `setId(String)`
      - `idProperty()`

  - ### style

    public final StringProperty styleProperty
    A string representation of the CSS style associated with this TableColumnBase instance. This is analogous to the "style" attribute of an HTML element. Note that, like the HTML style attribute, this variable contains style properties and values and not the selector portion of a style rule.

    Parsing this style might not be supported on some limited platforms. It is recommended to use a standalone CSS file instead.

    Default value:
      empty string
    See Also:
      - `getStyle()`
      - `setStyle(String)`
      - `styleProperty()`

  - ### graphic

    public final ObjectProperty<Node> graphicProperty

    The graphic to show in the table column to allow the user to indicate graphically what is in the column.

    See Also:
      - `getGraphic()`
      - `setGraphic(Node)`
      - `graphicProperty()`

  - ### sortNode

    public final ObjectProperty<Node> sortNodeProperty

    The node to use as the "sort arrow", shown to the user in situations where the table column is part of the sort order. It may be the only item in the sort order, or it may be a secondary, tertiary, or latter sort item, and the node should reflect this visually. This is only used in the case of the table column being in the sort order (refer to, for example, `TableView.getSortOrder()` and `TreeTableView.getSortOrder()`). If not specified, the table column skin implementation is responsible for providing a default sort node.

    The sort node is commonly seen represented as a triangle that rotates on screen to indicate whether the table column is part of the sort order, and if so, whether the sort is ascending or descending, and what position in the sort order it is in.

    See Also:
      - `getSortNode()`
      - `setSortNode(Node)`
      - `sortNodeProperty()`

  - ### width

    public final ReadOnlyDoubleProperty widthProperty
    The width of this column. Modifying this will result in the column width adjusting visually. It is recommended to not bind this property to an external property, as that will result in the column width not being adjustable by the user through dragging the left and right borders of column headers.
    See Also:
      - `getWidth()`
      - `widthProperty()`

  - ### minWidth

    public final DoubleProperty minWidthProperty
    The minimum width the table column is permitted to be resized to.
    See Also:
      - `getMinWidth()`
      - `setMinWidth(double)`
      - `minWidthProperty()`

  - ### prefWidth

    public final DoubleProperty prefWidthProperty
    The preferred width of the TableColumn.
    See Also:
      - `getPrefWidth()`
      - `setPrefWidth(double)`
      - `prefWidthProperty()`

  - ### maxWidth

    public final DoubleProperty maxWidthProperty
    The maximum width the table column is permitted to be resized to.
    See Also:
      - `getMaxWidth()`
      - `setMaxWidth(double)`
      - `maxWidthProperty()`

  - ### resizable

    public final BooleanProperty resizableProperty
    Used to indicate whether the width of this column can change. It is up to the resizing policy to enforce this however.
    See Also:
      - `isResizable()`
      - `setResizable(boolean)`
      - `resizableProperty()`

  - ### sortable

    public final BooleanProperty sortableProperty

    A boolean property to toggle on and off the 'sortability' of this column. When this property is true, this column can be included in sort operations. If this property is false, it will not be included in sort operations, even if it is contained within the sort order list of the underlying UI control (e.g. `TableView.getSortOrder()` or `TreeTableView.getSortOrder()`).

    For example, iIf a TableColumn instance is contained within the TableView sortOrder ObservableList, and its sortable property toggles state, it will force the TableView to perform a sort, as it is likely the view will need updating.

    See Also:
      - `isSortable()`
      - `setSortable(boolean)`
      - `sortableProperty()`

  - ### reorderable

    public final BooleanProperty reorderableProperty
    A boolean property to toggle on and off the 'reorderability' of this column (with drag and drop - reordering by modifying the appropriate `columns` list is always allowed). When this property is true, this column can be reordered by users simply by dragging and dropping the columns into their desired positions. When this property is false, this ability to drag and drop columns is not available.
    Since:
      9
    See Also:
      - `isReorderable()`
      - `setReorderable(boolean)`
      - `reorderableProperty()`

  - ### comparator

    public final ObjectProperty<Comparator<T>> comparatorProperty
    Comparator function used when sorting this table column. The two Objects given as arguments are the cell data for two individual cells in this column.
    See Also:
      - `getComparator()`
      - `setComparator(Comparator)`
      - `comparatorProperty()`

  - ### editable

    public final BooleanProperty editableProperty
    Specifies whether this table column allows editing. This, unlike `TableView.editableProperty()` and `TreeTableView.editableProperty()`, is true by default.
    See Also:
      - `isEditable()`
      - `setEditable(boolean)`
      - `editableProperty()`

- ## Field Details

  - ### DEFAULT_COMPARATOR

    public static final Comparator DEFAULT_COMPARATOR
    By default all columns will use this comparator to perform sorting. This comparator simply performs null checks, and checks if the object is `Comparable`. If it is, the `Comparable.compareTo(java.lang.Object)` method is called, otherwise this method will defer to `Collator.compare(java.lang.String, java.lang.String)`.

- ## Constructor Details

  - ### TableColumnBase

    protected TableColumnBase()
    Creates a default TableColumn with default cell factory, comparator, and onEditCommit implementation.

  - ### TableColumnBase

    protected TableColumnBase(String text)
    Creates 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

  - ### textProperty

    public final StringProperty textProperty()
    This is the text to show in the header for this column.
    Returns:
      the `text` property
    See Also:
      - `getText()`
      - `setText(String)`

  - ### setText

    public final void setText(String value)
    Sets the value of the `text` property.
    Property description:
      This is the text to show in the header for this column.
    Parameters:
      `value` - the value for the `text` property
    See Also:
      - `getText()`
      - `textProperty()`

  - ### getText

    public final String getText()
    Gets the value of the `text` property.
    Property description:
      This is the text to show in the header for this column.
    Returns:
      the value of the `text` property
    See Also:
      - `setText(String)`
      - `textProperty()`

  - ### setVisible

    public final void setVisible(boolean value)
    Sets the value of the `visible` property.
    Property description:
      Toggling this will immediately toggle the visibility of this column, and all children columns.
    Parameters:
      `value` - the value for the `visible` property
    See Also:
      - `isVisible()`
      - `visibleProperty()`

  - ### isVisible

    public final boolean isVisible()
    Gets the value of the `visible` property.
    Property description:
      Toggling this will immediately toggle the visibility of this column, and all children columns.
    Returns:
      the value of the `visible` property
    See Also:
      - `setVisible(boolean)`
      - `visibleProperty()`

  - ### visibleProperty

    public final BooleanProperty visibleProperty()
    Toggling this will immediately toggle the visibility of this column, and all children columns.
    Returns:
      the `visible` property
    See Also:
      - `isVisible()`
      - `setVisible(boolean)`

  - ### getParentColumn

    public final TableColumnBase<S,?> getParentColumn()
    Gets the value of the `parentColumn` property.
    Property description:
      This read-only property will always refer to the parent of this column, in the situation where nested columns are being used.

      In the currently existing subclasses, to create a nested column is simply a matter of placing the relevant TableColumnBase instances inside the columns ObservableList (for example, see `TableColumn.getColumns()` and `TreeTableColumn.getColumns()`.

    Returns:
      the value of the `parentColumn` property
    See Also:
      - `parentColumnProperty()`

  - ### parentColumnProperty

    public final ReadOnlyObjectProperty<TableColumnBase<S,?>> parentColumnProperty()
    This read-only property will always refer to the parent of this column, in the situation where nested columns are being used.

    In the currently existing subclasses, to create a nested column is simply a matter of placing the relevant TableColumnBase instances inside the columns ObservableList (for example, see `TableColumn.getColumns()` and `TreeTableColumn.getColumns()`.

    Returns:
      the `parentColumn` property
    See Also:
      - `getParentColumn()`

  - ### setContextMenu

    public final void setContextMenu(ContextMenu value)
    Sets the value of the `contextMenu` property.
    Property description:
      This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.
    Parameters:
      `value` - the value for the `contextMenu` property
    See Also:
      - `getContextMenu()`
      - `contextMenuProperty()`

  - ### getContextMenu

    public final ContextMenu getContextMenu()
    Gets the value of the `contextMenu` property.
    Property description:
      This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.
    Returns:
      the value of the `contextMenu` property
    See Also:
      - `setContextMenu(ContextMenu)`
      - `contextMenuProperty()`

  - ### contextMenuProperty

    public final ObjectProperty<ContextMenu> contextMenuProperty()
    This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.
    Returns:
      the `contextMenu` property
    See Also:
      - `getContextMenu()`
      - `setContextMenu(ContextMenu)`

  - ### setId

    public final void setId(String value)
    Sets the value of the `id` property.
    Property description:
      The id of this TableColumnBase. This simple string identifier is useful for finding a specific TableColumnBase within a UI control that uses TableColumnBase instances. The default value is `null`.
    Default value:
      null
    Parameters:
      `value` - the value for the `id` property
    See Also:
      - `getId()`
      - `idProperty()`

  - ### getId

    public final String getId()
    Gets the value of the `id` property.
    Specified by:
      `getId` in interface `Styleable`
    Property description:
      The id of this TableColumnBase. This simple string identifier is useful for finding a specific TableColumnBase within a UI control that uses TableColumnBase instances. The default value is `null`.
    Default value:
      null
    Returns:
      the value of the `id` property
    See Also:
      - `setId(String)`
      - `idProperty()`

  - ### idProperty

    public final StringProperty idProperty()
    The id of this TableColumnBase. This simple string identifier is useful for finding a specific TableColumnBase within a UI control that uses TableColumnBase instances. The default value is `null`.
    Default value:
      null
    Returns:
      the `id` property
    See Also:
      - `getId()`
      - `setId(String)`

  - ### setStyle

    public final void setStyle(String value)
    Sets the value of the `style` property.
    Property description:
      A string representation of the CSS style associated with this TableColumnBase instance. This is analogous to the "style" attribute of an HTML element. Note that, like the HTML style attribute, this variable contains style properties and values and not the selector portion of a style rule.

      Parsing this style might not be supported on some limited platforms. It is recommended to use a standalone CSS file instead.

    Default value:
      empty string
    Parameters:
      `value` - the value for the `style` property
    See Also:
      - `getStyle()`
      - `styleProperty()`

  - ### getStyle

    public final String getStyle()
    Gets the value of the `style` property.
    Specified by:
      `getStyle` in interface `Styleable`
    Property description:
      A string representation of the CSS style associated with this TableColumnBase instance. This is analogous to the "style" attribute of an HTML element. Note that, like the HTML style attribute, this variable contains style properties and values and not the selector portion of a style rule.

      Parsing this style might not be supported on some limited platforms. It is recommended to use a standalone CSS file instead.

    Default value:
      empty string
    Returns:
      the value of the `style` property
    See Also:
      - `setStyle(String)`
      - `styleProperty()`

  - ### styleProperty

    public final StringProperty styleProperty()
    A string representation of the CSS style associated with this TableColumnBase instance. This is analogous to the "style" attribute of an HTML element. Note that, like the HTML style attribute, this variable contains style properties and values and not the selector portion of a style rule.

    Parsing this style might not be supported on some limited platforms. It is recommended to use a standalone CSS file instead.

    Default value:
      empty string
    Returns:
      the `style` property
    See Also:
      - `getStyle()`
      - `setStyle(String)`

  - ### getStyleClass

    public ObservableList<String> getStyleClass()
    A list of String identifiers which can be used to logically group Nodes, specifically for an external style engine. This variable is analogous to the "class" attribute on an HTML element and, as such, each element of the list is a style class to which this Node belongs.
    Specified by:
      `getStyleClass` in interface `Styleable`
    Returns:
      a list of String identifiers which can be used to logically group Nodes, specifically for an external style engine
    See Also:
      - CSS3 class selectors

  - ### setGraphic

    public final void setGraphic(Node value)
    Sets the value of the `graphic` property.
    Property description:

      The graphic to show in the table column to allow the user to indicate graphically what is in the column.

    Parameters:
      `value` - the value for the `graphic` property
    See Also:
      - `getGraphic()`
      - `graphicProperty()`

  - ### getGraphic

    public final Node getGraphic()
    Gets the value of the `graphic` property.
    Property description:

      The graphic to show in the table column to allow the user to indicate graphically what is in the column.

    Returns:
      the value of the `graphic` property
    See Also:
      - `setGraphic(Node)`
      - `graphicProperty()`

  - ### graphicProperty

    public final ObjectProperty<Node> graphicProperty()

    The graphic to show in the table column to allow the user to indicate graphically what is in the column.

    Returns:
      the `graphic` property
    See Also:
      - `getGraphic()`
      - `setGraphic(Node)`

  - ### setSortNode

    public final void setSortNode(Node value)
    Sets the value of the `sortNode` property.
    Property description:

      The node to use as the "sort arrow", shown to the user in situations where the table column is part of the sort order. It may be the only item in the sort order, or it may be a secondary, tertiary, or latter sort item, and the node should reflect this visually. This is only used in the case of the table column being in the sort order (refer to, for example, `TableView.getSortOrder()` and `TreeTableView.getSortOrder()`). If not specified, the table column skin implementation is responsible for providing a default sort node.

      The sort node is commonly seen represented as a triangle that rotates on screen to indicate whether the table column is part of the sort order, and if so, whether the sort is ascending or descending, and what position in the sort order it is in.

    Parameters:
      `value` - the value for the `sortNode` property
    See Also:
      - `getSortNode()`
      - `sortNodeProperty()`

  - ### getSortNode

    public final Node getSortNode()
    Gets the value of the `sortNode` property.
    Property description:

      The node to use as the "sort arrow", shown to the user in situations where the table column is part of the sort order. It may be the only item in the sort order, or it may be a secondary, tertiary, or latter sort item, and the node should reflect this visually. This is only used in the case of the table column being in the sort order (refer to, for example, `TableView.getSortOrder()` and `TreeTableView.getSortOrder()`). If not specified, the table column skin implementation is responsible for providing a default sort node.

      The sort node is commonly seen represented as a triangle that rotates on screen to indicate whether the table column is part of the sort order, and if so, whether the sort is ascending or descending, and what position in the sort order it is in.

    Returns:
      the value of the `sortNode` property
    See Also:
      - `setSortNode(Node)`
      - `sortNodeProperty()`

  - ### sortNodeProperty

    public final ObjectProperty<Node> sortNodeProperty()

    The node to use as the "sort arrow", shown to the user in situations where the table column is part of the sort order. It may be the only item in the sort order, or it may be a secondary, tertiary, or latter sort item, and the node should reflect this visually. This is only used in the case of the table column being in the sort order (refer to, for example, `TableView.getSortOrder()` and `TreeTableView.getSortOrder()`). If not specified, the table column skin implementation is responsible for providing a default sort node.

    The sort node is commonly seen represented as a triangle that rotates on screen to indicate whether the table column is part of the sort order, and if so, whether the sort is ascending or descending, and what position in the sort order it is in.

    Returns:
      the `sortNode` property
    See Also:
      - `getSortNode()`
      - `setSortNode(Node)`

  - ### widthProperty

    public final ReadOnlyDoubleProperty widthProperty()
    The width of this column. Modifying this will result in the column width adjusting visually. It is recommended to not bind this property to an external property, as that will result in the column width not being adjustable by the user through dragging the left and right borders of column headers.
    Returns:
      the width property
    See Also:
      - `getWidth()`

  - ### getWidth

    public final double getWidth()
    Gets the value of the `width` property.
    Property description:
      The width of this column. Modifying this will result in the column width adjusting visually. It is recommended to not bind this property to an external property, as that will result in the column width not being adjustable by the user through dragging the left and right borders of column headers.
    Returns:
      the value of the `width` property
    See Also:
      - `widthProperty()`

  - ### setMinWidth

    public final void setMinWidth(double value)
    Sets the value of the `minWidth` property.
    Property description:
      The minimum width the table column is permitted to be resized to.
    Parameters:
      `value` - the value for the `minWidth` property
    See Also:
      - `getMinWidth()`
      - `minWidthProperty()`

  - ### getMinWidth

    public final double getMinWidth()
    Gets the value of the `minWidth` property.
    Property description:
      The minimum width the table column is permitted to be resized to.
    Returns:
      the value of the `minWidth` property
    See Also:
      - `setMinWidth(double)`
      - `minWidthProperty()`

  - ### minWidthProperty

    public final DoubleProperty minWidthProperty()
    The minimum width the table column is permitted to be resized to.
    Returns:
      the `minWidth` property
    See Also:
      - `getMinWidth()`
      - `setMinWidth(double)`

  - ### prefWidthProperty

    public final DoubleProperty prefWidthProperty()
    The preferred width of the TableColumn.
    Returns:
      preferred width property
    See Also:
      - `getPrefWidth()`
      - `setPrefWidth(double)`

  - ### setPrefWidth

    public final void setPrefWidth(double value)
    Sets the value of the `prefWidth` property.
    Property description:
      The preferred width of the TableColumn.
    Parameters:
      `value` - the value for the `prefWidth` property
    See Also:
      - `getPrefWidth()`
      - `prefWidthProperty()`

  - ### getPrefWidth

    public final double getPrefWidth()
    Gets the value of the `prefWidth` property.
    Property description:
      The preferred width of the TableColumn.
    Returns:
      the value of the `prefWidth` property
    See Also:
      - `setPrefWidth(double)`
      - `prefWidthProperty()`

  - ### maxWidthProperty

    public final DoubleProperty maxWidthProperty()
    The maximum width the table column is permitted to be resized to.
    Returns:
      maximum width property
    See Also:
      - `getMaxWidth()`
      - `setMaxWidth(double)`

  - ### setMaxWidth

    public final void setMaxWidth(double value)
    Sets the value of the `maxWidth` property.
    Property description:
      The maximum width the table column is permitted to be resized to.
    Parameters:
      `value` - the value for the `maxWidth` property
    See Also:
      - `getMaxWidth()`
      - `maxWidthProperty()`

  - ### getMaxWidth

    public final double getMaxWidth()
    Gets the value of the `maxWidth` property.
    Property description:
      The maximum width the table column is permitted to be resized to.
    Returns:
      the value of the `maxWidth` property
    See Also:
      - `setMaxWidth(double)`
      - `maxWidthProperty()`

  - ### resizableProperty

    public final BooleanProperty resizableProperty()
    Used to indicate whether the width of this column can change. It is up to the resizing policy to enforce this however.
    Returns:
      the `resizable` property
    See Also:
      - `isResizable()`
      - `setResizable(boolean)`

  - ### setResizable

    public final void setResizable(boolean value)
    Sets the value of the `resizable` property.
    Property description:
      Used to indicate whether the width of this column can change. It is up to the resizing policy to enforce this however.
    Parameters:
      `value` - the value for the `resizable` property
    See Also:
      - `isResizable()`
      - `resizableProperty()`

  - ### isResizable

    public final boolean isResizable()
    Gets the value of the `resizable` property.
    Property description:
      Used to indicate whether the width of this column can change. It is up to the resizing policy to enforce this however.
    Returns:
      the value of the `resizable` property
    See Also:
      - `setResizable(boolean)`
      - `resizableProperty()`

  - ### sortableProperty

    public final BooleanProperty sortableProperty()

    A boolean property to toggle on and off the 'sortability' of this column. When this property is true, this column can be included in sort operations. If this property is false, it will not be included in sort operations, even if it is contained within the sort order list of the underlying UI control (e.g. `TableView.getSortOrder()` or `TreeTableView.getSortOrder()`).

    For example, iIf a TableColumn instance is contained within the TableView sortOrder ObservableList, and its sortable property toggles state, it will force the TableView to perform a sort, as it is likely the view will need updating.

    Returns:
      the `sortable` property
    See Also:
      - `isSortable()`
      - `setSortable(boolean)`

  - ### setSortable

    public final void setSortable(boolean value)
    Sets the value of the `sortable` property.
    Property description:

      A boolean property to toggle on and off the 'sortability' of this column. When this property is true, this column can be included in sort operations. If this property is false, it will not be included in sort operations, even if it is contained within the sort order list of the underlying UI control (e.g. `TableView.getSortOrder()` or `TreeTableView.getSortOrder()`).

      For example, iIf a TableColumn instance is contained within the TableView sortOrder ObservableList, and its sortable property toggles state, it will force the TableView to perform a sort, as it is likely the view will need updating.

    Parameters:
      `value` - the value for the `sortable` property
    See Also:
      - `isSortable()`
      - `sortableProperty()`

  - ### isSortable

    public final boolean isSortable()
    Gets the value of the `sortable` property.
    Property description:

      A boolean property to toggle on and off the 'sortability' of this column. When this property is true, this column can be included in sort operations. If this property is false, it will not be included in sort operations, even if it is contained within the sort order list of the underlying UI control (e.g. `TableView.getSortOrder()` or `TreeTableView.getSortOrder()`).

      For example, iIf a TableColumn instance is contained within the TableView sortOrder ObservableList, and its sortable property toggles state, it will force the TableView to perform a sort, as it is likely the view will need updating.

    Returns:
      the value of the `sortable` property
    See Also:
      - `setSortable(boolean)`
      - `sortableProperty()`

  - ### reorderableProperty

    public final BooleanProperty reorderableProperty()
    A boolean property to toggle on and off the 'reorderability' of this column (with drag and drop - reordering by modifying the appropriate `columns` list is always allowed). When this property is true, this column can be reordered by users simply by dragging and dropping the columns into their desired positions. When this property is false, this ability to drag and drop columns is not available.
    Returns:
      the `reorderable` property
    Since:
      9
    See Also:
      - `isReorderable()`
      - `setReorderable(boolean)`

  - ### setReorderable

    public final void setReorderable(boolean value)
    Sets the value of the `reorderable` property.
    Property description:
      A boolean property to toggle on and off the 'reorderability' of this column (with drag and drop - reordering by modifying the appropriate `columns` list is always allowed). When this property is true, this column can be reordered by users simply by dragging and dropping the columns into their desired positions. When this property is false, this ability to drag and drop columns is not available.
    Parameters:
      `value` - the value for the `reorderable` property
    Since:
      9
    See Also:
      - `isReorderable()`
      - `reorderableProperty()`

  - ### isReorderable

    public final boolean isReorderable()
    Gets the value of the `reorderable` property.
    Property description:
      A boolean property to toggle on and off the 'reorderability' of this column (with drag and drop - reordering by modifying the appropriate `columns` list is always allowed). When this property is true, this column can be reordered by users simply by dragging and dropping the columns into their desired positions. When this property is false, this ability to drag and drop columns is not available.
    Returns:
      the value of the `reorderable` property
    Since:
      9
    See Also:
      - `setReorderable(boolean)`
      - `reorderableProperty()`

  - ### comparatorProperty

    public final ObjectProperty<Comparator<T>> comparatorProperty()
    Comparator function used when sorting this table column. The two Objects given as arguments are the cell data for two individual cells in this column.
    Returns:
      the `comparator` property
    See Also:
      - `getComparator()`
      - `setComparator(Comparator)`

  - ### setComparator

    public final void setComparator(Comparator<T> value)
    Sets the value of the `comparator` property.
    Property description:
      Comparator function used when sorting this table column. The two Objects given as arguments are the cell data for two individual cells in this column.
    Parameters:
      `value` - the value for the `comparator` property
    See Also:
      - `getComparator()`
      - `comparatorProperty()`

  - ### getComparator

    public final Comparator<T> getComparator()
    Gets the value of the `comparator` property.
    Property description:
      Comparator function used when sorting this table column. The two Objects given as arguments are the cell data for two individual cells in this column.
    Returns:
      the value of the `comparator` property
    See Also:
      - `setComparator(Comparator)`
      - `comparatorProperty()`

  - ### setEditable

    public final void setEditable(boolean value)
    Sets the value of the `editable` property.
    Property description:
      Specifies whether this table column allows editing. This, unlike `TableView.editableProperty()` and `TreeTableView.editableProperty()`, is true by default.
    Parameters:
      `value` - the value for the `editable` property
    See Also:
      - `isEditable()`
      - `editableProperty()`

  - ### isEditable

    public final boolean isEditable()
    Gets the value of the `editable` property.
    Property description:
      Specifies whether this table column allows editing. This, unlike `TableView.editableProperty()` and `TreeTableView.editableProperty()`, is true by default.
    Returns:
      the value of the `editable` property
    See Also:
      - `setEditable(boolean)`
      - `editableProperty()`

  - ### editableProperty

    public final BooleanProperty editableProperty()
    Specifies whether this table column allows editing. This, unlike `TableView.editableProperty()` and `TreeTableView.editableProperty()`, is true by default.
    Returns:
      the `editable` property
    See Also:
      - `isEditable()`
      - `setEditable(boolean)`

  - ### getProperties

    public final ObservableMap<Object,Object> getProperties()
    Returns an observable map of properties on this table column for use primarily by application developers.
    Returns:
      an observable map of properties on this table column for use primarily by application developers

  - ### hasProperties

    public boolean hasProperties()
    Tests if this table column has properties.
    Returns:
      true if node has properties.

  - ### setUserData

    public void setUserData(Object value)
    Convenience method for setting a single Object property that can be retrieved at a later date. This is functionally equivalent to calling the getProperties().put(Object key, Object value) method. This can later be retrieved by calling `getUserData()`.
    Parameters:
      `value` - The value to be stored - this can later be retrieved by calling `getUserData()`.

  - ### getUserData

    public Object getUserData()
    Returns a previously set Object property, or null if no such property has been set using the `setUserData(java.lang.Object)` method.
    Returns:
      The Object that was previously set, or null if no property has been set or if null was set.

  - ### getColumns

    public abstract ObservableList<? extends TableColumnBase<S,?>> getColumns()
    This enables support for nested columns, which can be useful to group together related data. For example, we may have a 'Name' column with two nested columns for 'First' and 'Last' names.

    This has no impact on the table as such - all column indices point to the leaf columns only, and it isn't possible to sort using the parent column, just the leaf columns. In other words, this is purely a visual feature.

    Returns:
      An ObservableList containing TableColumnBase instances (or subclasses) that are the children of this TableColumnBase. If these children TableColumnBase instances are set as visible, they will appear beneath this table column.

  - ### getCellData

    public final T getCellData(int index)
    Returns the actual value for a cell at a given row index (and which belongs to this table column).
    Parameters:
      `index` - The row index for which the data is required.
    Returns:
      The data that belongs to the cell at the intersection of the given row index and the table column that this method is called on.

  - ### getCellData

    public final T getCellData(S item)
    Returns the actual value for a cell from the given item.
    Parameters:
      `item` - The item from which a value of type T should be extracted.
    Returns:
      The data that should be used in a specific cell in this column, based on the item passed in as an argument.

  - ### getCellObservableValue

    public abstract ObservableValue<T> getCellObservableValue(int index)
    Attempts to return an ObservableValue<T> for the item in the given index (which is of type S). In other words, this method expects to receive an integer value that is greater than or equal to zero, and less than the size of the underlying data model. If the index is valid, this method will return an ObservableValue<T> for this specific column.

    This is achieved by calling the `cell value factory`, and returning whatever it returns when passed a `CellDataFeatures` (see, for example, the CellDataFeatures classes belonging to `TableColumn` and `TreeTableColumn` for more information).

    Parameters:
      `index` - The index of the item (of type S) for which an ObservableValue<T> is sought.
    Returns:
      An ObservableValue<T> for this specific table column.

  - ### getCellObservableValue

    public abstract ObservableValue<T> getCellObservableValue(S item)
    Attempts to return an ObservableValue<T> for the given item (which is of type S). In other words, this method expects to receive an object from the underlying data model for the entire 'row' in the table, and it must return an ObservableValue<T> for the value in this specific column.

    This is achieved by calling the `cell value factory`, and returning whatever it returns when passed a `CellDataFeatures` (see, for example, the CellDataFeatures classes belonging to `TableColumn` and `TreeTableColumn` for more information).

    Parameters:
      `item` - The item (of type S) for which an ObservableValue<T> is sought.
    Returns:
      An ObservableValue<T> for this specific table column.

  - ### buildEventDispatchChain

    public EventDispatchChain buildEventDispatchChain(EventDispatchChain tail)
    Description copied from interface: `EventTarget`
    Construct an event dispatch chain for this target. The event dispatch chain contains event dispatchers which might be interested in processing of events targeted at this `EventTarget`. This event target is not automatically added to the chain, so if it wants to process events, it needs to add an `EventDispatcher` for itself to the chain.

    In the case the event target is part of some hierarchy, the chain for it is usually built from event dispatchers collected from the root of the hierarchy to the event target.

    The event dispatch chain is constructed by modifications to the provided initial event dispatch chain. The returned chain should have the initial chain at its end so the dispatchers should be prepended to the initial chain.

    The caller shouldn't assume that the initial chain remains unchanged nor that the returned value will reference a different chain.

    Specified by:
      `buildEventDispatchChain` in interface `EventTarget`
    Parameters:
      `tail` - the initial chain to build from
    Returns:
      the resulting event dispatch chain for this target

  - ### getPseudoClassStates

    public final ObservableSet<PseudoClass> getPseudoClassStates()
    Return the pseudo-class state of this Styleable. CSS assumes this set is read-only.
    Specified by:
      `getPseudoClassStates` in interface `Styleable`
    Returns:
      the pseudo-class state