TreeTableColumn

scalafx.scene.control.TreeTableColumn
See theTreeTableColumn companion object
class TreeTableColumn[S, T](val delegate: TreeTableColumn[S, T]) extends TableColumnBase[TreeItem[S], T], SFXDelegate[TreeTableColumn[S, T]]

A TreeTableView is made up of a number of TreeTableColumn instances. Each TreeTableColumn in a TreeTableView is responsible for displaying (and editing) the contents of that column.

Wraps a JavaFX TreeTableColumn

Type parameters

S

The type of the TreeTableView generic type (i.e. S == TreeTableView)

T

The type of the content in all cells in this TreeTableColumn.

Value parameters

delegate

A JavaFX TreeTableColumn to be wrapped. Its default value is a new JavaFX TreeTableColumn.

Attributes

Constructor

Creates a new TreeTableColumn from a JavaFX one.

Since

8.0

Companion
object
Graph
Supertypes
class TableColumnBase[TreeItem[S], T]
trait Styleable
class EventTarget
trait SFXDelegate[TreeTableColumn[S, T]]
class Object
trait Matchable
class Any
Show all

Members list

Type members

Inherited classlikes

object FilterMagnet

Companion object implementing Magnet Pattern Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Companion object implementing Magnet Pattern Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Attributes

Inherited from:
EventTarget
Supertypes
class Object
trait Matchable
class Any
sealed trait FilterMagnet[J <: Event, S <: SFXDelegate[J]]

Trait implementing Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Trait implementing Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Attributes

Inherited from:
EventTarget
Supertypes
class Object
trait Matchable
class Any
object HandlerMagnet

Companion object implementing Magnet Pattern Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Companion object implementing Magnet Pattern Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Attributes

Inherited from:
EventTarget
Supertypes
class Object
trait Matchable
class Any
sealed trait HandlerMagnet[J <: Event, S <: SFXDelegate[J]]

Trait implementing Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Trait implementing Magnet Pattern to avoid compilation error "ambiguous reference to overloaded definition"

Attributes

Inherited from:
EventTarget
Supertypes
class Object
trait Matchable
class Any

Value members

Constructors

def this(text: String)

Creates a TreeTableColumn with the text set to the provided string, with default cell factory, comparator, and onEditCommit implementation.

Creates a TreeTableColumn with the text set to the provided string, with default cell factory, comparator, and onEditCommit implementation.

Value parameters

text

The string to show when the TreeTableColumn is placed within the TreeTableView.

Attributes

Concrete methods

def cellFactory: ObjectProperty[Callback[TreeTableColumn[S, T], TreeTableCell[S, T]]]

The cell factory for all cells in this column. The cell factory is responsible for rendering the data contained within each TreeTableCell for a single TreeTableColumn.

The cell factory for all cells in this column. The cell factory is responsible for rendering the data contained within each TreeTableCell for a single TreeTableColumn.

By default TreeTableColumn uses a default 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 (see Cell and TreeTableView for example).

Finally, there are a number of pre-built cell factories available in the javafx.scene.control.cell package.

Attributes

def cellFactory_=(callback: Callback[TreeTableColumn[S, T], TreeTableCell[S, T]]): Unit
def cellFactory_=(op: (TreeTableCell[S, T], T) => Unit): Unit

This is a helper method for easy creation of custom cell factories. The custom cell is automatically created, and it handles rendering of empty cells. The user is only responsible for providing an operation op that renders non-empty cells.

This is a helper method for easy creation of custom cell factories. The custom cell is automatically created, and it handles rendering of empty cells. The user is only responsible for providing an operation op that renders non-empty cells.

The operation op provides as input the already created custom cell and value of that cell. The value is provided by the cellValueFactory. The value is guaranteed to be non null. The null values are automatically rendered as empty cells by the provided cell object.

Here is an example where value's type is a case class Person that contains two text fields: firstName and lastName.

 case class Person(firstName:String, lastName:String)
 ...

 cellFactory = (cell, value) => {
   cell.text = value.firstName + " " + value.lastName
 }

Another example where 'value' is of type 'Color' and the cell factory creates a circle representing that color:

 cellFactory = (cell, value) => {
   cell.graphic = new Circle {
      fill = value
      radius = 8
   }
 }

Value parameters

op

a method that will create content for a given cell. It gets as an input automatically created custom cell and a non-null value of that cell. op is called in the cell's updateItem method.

Attributes

Attempts to return an ObservableValue 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 for this specific column.

Attempts to return an ObservableValue 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 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).

Value parameters

index

The index of the item (of type S) for which an ObservableValue is sought.

Attributes

Returns

An ObservableValue for this specific table column.

Attempts to return an ObservableValue 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 for the value in this specific column.

Attempts to return an ObservableValue 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 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).

Value parameters

item

The item (of type S) for which an ObservableValue is sought.

Attributes

Returns

An ObservableValue for this specific table column.

The cell value factory needs to be set to specify how to populate all cells within a single TreeTableColumn. A cell value factory is a Callback that provides a TreeTableColumn.CellDataFeatures instance, and expects an ObservableValue to be returned. The returned ObservableValue instance will be observed internally to allow for updates to the value to be immediately reflected on screen.

The cell value factory needs to be set to specify how to populate all cells within a single TreeTableColumn. A cell value factory is a Callback that provides a TreeTableColumn.CellDataFeatures instance, and expects an ObservableValue to be returned. The returned ObservableValue instance will be observed internally to allow for updates to the value to be immediately reflected on screen.

An example of how to set a cell value factory is:

 // p.value returns the TreeItem[Person] instance for a particular TreeTableView row,
 // p.value.value returns the Person instance inside the TreeItem[Person]
 cellValueFactory = { p => p.value.value.firstName }

A simple complete example (from scalafx-demos SimpleTreeTableView):

import scalafx.application.JFXApp3
import scalafx.application.JFXApp3.PrimaryStage
import scalafx.controls.tableview.Person
import scalafx.scene.Scene
import scalafx.scene.control.TreeTableColumn._
import scalafx.scene.control.{TreeItem, TreeTableColumn, TreeTableView}

object SimpleTreeTableView extends JFXApp3 {

override def start(): Unit = {

  val treeRoot = new TreeItem[Person](new Person("Peggy", "Sue", "555-6798"))

  treeRoot.children += new TreeItem[Person](new Person("Rocky", "Raccoon", "555-6798"))

  stage = new PrimaryStage {
    title = "Simple Table View"
    scene = new Scene {
      content = new TreeTableView[Person](treeRoot) {
        columns ++= Seq(
          new TreeTableColumn[Person, String] {
            text = "First Name"
            cellValueFactory = _.value.getValue.firstName
            prefWidth = 180
          },
          new TreeTableColumn[Person, String]() {
            text = "Last Name"
            cellValueFactory = _.value.getValue.lastName
            prefWidth = 180
          }
        )
      }
    }
  }
}
}

A common approach is to want to populate cells in a TreeTableColumn using a single value from a Java bean. To support this common scenario, there is the TreeItemPropertyValueFactory class. 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 TreeItemPropertyValueFactory class:

firstNameCol.cellValueFactory = new TreeItemPropertyValueFactoryPerson,String)

Attributes

def columns: ObservableBuffer[TreeTableColumn[S, _]]

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 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.

Attributes

Returns

An ObservableBuffer 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.

override def cssMetaData: Seq[CssMetaData[_ <: Styleable, _]]

The CssMetaData of this Styleable. This may be returned as an unmodifiable list.

The CssMetaData of this Styleable. This may be returned as an unmodifiable list.

Attributes

Definition Classes
def onEditCancel: ObjectProperty[EventHandler[CellEditEvent[S, T]]]

This event handler will be fired when the user cancels editing a cell.

This event handler will be fired when the user cancels editing a cell.

Attributes

def onEditCancel_=(v: EventHandler[CellEditEvent[S, T]]): Unit
def onEditCommit: ObjectProperty[EventHandler[CellEditEvent[S, T]]]

This event handler will be fired when the user successfully commits their editing.

This event handler will be fired when the user successfully commits their editing.

Attributes

def onEditCommit_=(v: EventHandler[CellEditEvent[S, T]]): Unit
def onEditStart: ObjectProperty[EventHandler[CellEditEvent[S, T]]]

This event handler will be fired when the user successfully initiates editing.

This event handler will be fired when the user successfully initiates editing.

Attributes

def onEditStart_=(v: EventHandler[CellEditEvent[S, T]]): Unit
def sortType: ObjectProperty[SortType]

Used to state whether this column, if it is part of the TableView.sortOrder ObservableList, should be sorted in ascending or descending order.

Used to state whether this column, if it is part of the TableView.sortOrder ObservableList, should be sorted in ascending or descending order.

Attributes

def treeTableView: ReadOnlyObjectProperty[TreeTableView[S]]

The TreeTableView that this TreeTableColumn belongs to.

The TreeTableView that this TreeTableColumn belongs to.

Attributes

Inherited methods

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.

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.

Value parameters

tail

the initial chain to build from

Attributes

Returns

the resulting event dispatch chain for this target

See also
Inherited from:
EventTarget
def comparator: ObjectProperty[Comparator[T]]

Comparator function used when sorting this TableColumnBase.

Comparator function used when sorting this TableColumnBase.

Attributes

Inherited from:
TableColumnBase
def comparator_=(v: Ordering[T]): Unit

Attributes

Inherited from:
TableColumnBase
def contextMenu: ObjectProperty[ContextMenu]

This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.

This menu will be shown whenever the user right clicks within the header area of this TableColumnBase.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase

Specifies whether this TableColumnBase allows editing.

Specifies whether this TableColumnBase allows editing.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase
override def equals(ref: Any): Boolean

Verifies if a object is equals to this delegate.

Verifies if a object is equals to this delegate.

Value parameters

ref

Object to be compared.

Attributes

Returns

if the other object is equals to this delegate or not.

Definition Classes
SFXDelegate -> Any
Inherited from:
SFXDelegate
def filterEvent[J <: Event, S <: Event & SFXDelegate[J]](eventType: EventType[J])(filter: FilterMagnet[J, S]): Subscription

Registers an event filter. Registered event filters get an event before any associated event handlers.

Registers an event filter. Registered event filters get an event before any associated event handlers.

Example of filtering mouse events

pane.filterEvent(MouseEvent.Any) {
  me: MouseEvent => {
    me.eventType match {
      case MouseEvent.MousePressed => {
        ...
      }
      case MouseEvent.MouseDragged => {
        ...
      }
      case _ => {
        ...
      }
    }
  }
}

or

pane.filterEvent(MouseEvent.Any) { () => println("Some mouse event handled") }

Type parameters

J

type JavaFX delegate of the event

S

ScalaFX type for J type wrapper.

Value parameters

eventType

type of events that will be handled.

filter

code handling the event, see examples above.

Attributes

Inherited from:
EventTarget
def getCellData(index: TreeItem[S]): T

Returns the actual value for a cell from the given item.

Returns the actual value for a cell from the given item.

Attributes

Inherited from:
TableColumnBase
def getCellData(index: Int): T

Returns the actual value for a cell at a given row index (and which belongs to this TableColumnBase).

Returns the actual value for a cell at a given row index (and which belongs to this TableColumnBase).

Attributes

Inherited from:
TableColumnBase
def getId: String

The id of this Styleable.

The id of this Styleable.

IMPLEMENTATION NOTE: For this method was adopted the name getId instead id to not conflict with its subclasses already have a method with this name which returns a StringProperty.

Attributes

Inherited from:
Styleable

A string representation of the CSS style associated with this specific Node.

A string representation of the CSS style associated with this specific Node.

IMPLEMENTATION NOTE: For this method was adopted the name getStyle instead style to not conflict with its subclasses already have a method with this name which returns a StringProperty.

Attributes

Inherited from:
Styleable
def graphic: ObjectProperty[Node]

The graphic in the TableColumnBase.

The graphic in the TableColumnBase.

Attributes

Inherited from:
TableColumnBase
def graphic_=(v: Node): Unit

Attributes

Inherited from:
TableColumnBase
def handleEvent[J <: Event, S <: Event & SFXDelegate[J]](eventType: EventType[J])(handler: HandlerMagnet[J, S]): Subscription

Registers an event handler. The handler is called when the node receives an Event of the specified type during the bubbling phase of event delivery.

Registers an event handler. The handler is called when the node receives an Event of the specified type during the bubbling phase of event delivery.

Example of handling mouse events

pane.handleEvent(MouseEvent.Any) {
  me: MouseEvent => {
    me.eventType match {
      case MouseEvent.MousePressed => ...
      case MouseEvent.MouseDragged => ...
      case _                       => {}
    }
  }
}

or

pane.handleEvent(MouseEvent.Any) { () => println("Some mouse event handled") }

Type parameters

J

type JavaFX delegate of the event

S

ScalaFX type for J type wrapper.

Value parameters

eventType

type of events that will be handled.

handler

code handling the event, see examples above.

Attributes

Returns

Returns a subscription that can be used to cancel/remove this event handler

Inherited from:
EventTarget

Tests if this TableColumnBase has properties.

Tests if this TableColumnBase has properties.

Attributes

Inherited from:
TableColumnBase
override def hashCode: Int

Attributes

Returns

The delegate hashcode

Definition Classes
SFXDelegate -> Any
Inherited from:
SFXDelegate

The id of this TableColumnBase.

The id of this TableColumnBase.

Attributes

Inherited from:
TableColumnBase
def id_=(v: String): Unit

Attributes

Inherited from:
TableColumnBase

The maximum width the TableColumnBase is permitted to be resized to.

The maximum width the TableColumnBase is permitted to be resized to.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase

The minimum width the TableColumnBase is permitted to be resized to.

The minimum width the TableColumnBase is permitted to be resized to.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase
def parentColumn: ReadOnlyObjectProperty[TableColumnBase[S, _]]

This read-only property will always refer to the parent of this column, in the situation where nested columns are being used.

This read-only property will always refer to the parent of this column, in the situation where nested columns are being used.

Attributes

Inherited from:
TableColumnBase

The preferred width of the TableColumnBase.

The preferred width of the TableColumnBase.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase
def pseudoClassStates: ObservableSet[PseudoClass]

The pseudo-class state of this Styleable.

The pseudo-class state of this Styleable.

Attributes

Inherited from:
Styleable

Used to indicate whether the width of this column can change.

Used to indicate whether the width of this column can change.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase

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

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

Attributes

Inherited from:
TableColumnBase
def sortNode_=(v: Node): Unit

Attributes

Inherited from:
TableColumnBase

A boolean property to toggle on and off the sortability of this column.

A boolean property to toggle on and off the sortability of this column.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase

The CSS style string associated to this TableColumnBase.

The CSS style string associated to this TableColumnBase.

Attributes

Inherited from:
TableColumnBase

A list of String identifiers which can be used to logically group Nodes, specifically for an external style engine.

A list of String identifiers which can be used to logically group Nodes, specifically for an external style engine.

Attributes

Inherited from:
Styleable
def style_=(v: String): Unit

Attributes

Inherited from:
TableColumnBase

Returns the Node that represents this Styleable object. This method should be overridden in cases where the Styleable is not itself a Node, so that it may optionally return the relevant root node representation of itself. By default this method returns null, which can mean that either the Styleable itself is a Node, or if that is not the case, that the Styleable does not have a node representation available at the time of request.

Returns the Node that represents this Styleable object. This method should be overridden in cases where the Styleable is not itself a Node, so that it may optionally return the relevant root node representation of itself. By default this method returns null, which can mean that either the Styleable itself is a Node, or if that is not the case, that the Styleable does not have a node representation available at the time of request.

Attributes

Returns

the Node that represents this Styleable object

Since

9

Inherited from:
Styleable

The parent of this Styleable, or null if there is no parent.

The parent of this Styleable, or null if there is no parent.

Attributes

Inherited from:
Styleable

This is the text to show in the header for this column.

This is the text to show in the header for this column.

Attributes

Inherited from:
TableColumnBase
def text_=(v: String): Unit

Attributes

Inherited from:
TableColumnBase
override def toString: String

Attributes

Returns

Returns the original delegate's toString() adding a [SFX] prefix.

Definition Classes
SFXDelegate -> Any
Inherited from:
SFXDelegate

The type of this Styleable that is to be used in selector matching.

The type of this Styleable that is to be used in selector matching.

Attributes

Inherited from:
Styleable
def userData: AnyRef

Returns a previously set Object property, or null if no such property has been set using the setUserData(Any) method.

Returns a previously set Object property, or null if no such property has been set using the setUserData(Any) method.

Attributes

Inherited from:
TableColumnBase

Toggling this will immediately toggle the visibility of this column, and all children columns.

Toggling this will immediately toggle the visibility of this column, and all children columns.

Attributes

Inherited from:
TableColumnBase

Attributes

Inherited from:
TableColumnBase

The width of this column.

The width of this column.

Attributes

Inherited from:
TableColumnBase

Concrete fields

override val delegate: TreeTableColumn[S, T]

JavaFX object to be wrapped.

JavaFX object to be wrapped.

Attributes