Chart (JavaFX 28)
Description: declaration: module: javafx.controls, package: javafx.scene.chart, class: Chart

# Class Chart

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.chart.Chart

All Implemented Interfaces:
  `Styleable, EventTarget`

Direct Known Subclasses:
  `PieChart, XYChart`

public abstract class Chart extends Region
Base class for all charts. It has 3 parts the title, legend and chartContent. The chart content is populated by the specific subclass of Chart.

Since:
  JavaFX 2.0

- ## Property Summary

  Properties
  Type
  Property
  Description
  `final BooleanProperty`
  `animated`
  When true any data changes will be animated.
  `protected final ObjectProperty<Node>`
  `legend`
  The node to display as the Legend.
  `final ObjectProperty<Side>`
  `legendSide`
  The side of the chart where the legend should be displayed
  `final BooleanProperty`
  `legendVisible`
  When true the chart will display a legend if the chart implementation supports a legend.
  `final StringProperty`
  `title`
  The chart title
  `final ObjectProperty<Side>`
  `titleSide`
  The side of the chart where the title is displayed

  ### Properties declared in class Region

  `background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width`

  ### Properties declared in class Parent

  `needsLayout`

  ### Properties declared in class Node

  `accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, focusVisible, focusWithin, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragDone, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible`

- ## Field Summary

  ### Fields declared in class Region

  `USE_COMPUTED_SIZE, USE_PREF_SIZE`

  ### Fields declared in class Node

  `BASELINE_OFFSET_SAME_AS_HEIGHT`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Chart()`
  Creates a new default Chart instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `animate(Animation animation)`
  Play the given animation on every frame of the animation the chart will be relayed out until the animation finishes.
  `final BooleanProperty`
  `animatedProperty()`
  When true any data changes will be animated.
  `protected double`
  `computeMinHeight(double width)`
  Charts are sized outside in, user tells chart how much space it has and chart draws inside that.
  `protected double`
  `computeMinWidth(double height)`
  Charts are sized outside in, user tells chart how much space it has and chart draws inside that.
  `protected double`
  `computePrefHeight(double width)`
  Charts are sized outside in, user tells chart how much space it has and chart draws inside that.
  `protected double`
  `computePrefWidth(double height)`
  Charts are sized outside in, user tells chart how much space it has and chart draws inside that.
  `final boolean`
  `getAnimated()`
  Indicates whether data changes will be animated or not.
  `protected ObservableList<Node>`
  `getChartChildren()`
  Modifiable and observable list of all content in the chart.
  `static List<CssMetaData<? extends Styleable, ?>>`
  `getClassCssMetaData()`
  Gets the `CssMetaData` associated with this class, which may include the `CssMetaData` of its superclasses.
  `List<CssMetaData<? extends Styleable, ?>>`
  `getCssMetaData()`
  This method should delegate to `Node.getClassCssMetaData()` so that a Node's CssMetaData can be accessed without the need for reflection.
  `protected final Node`
  `getLegend()`
  Gets the value of the `legend` property.
  `final Side`
  `getLegendSide()`
  Gets the value of the `legendSide` property.
  `final String`
  `getTitle()`
  Gets the value of the `title` property.
  `final Side`
  `getTitleSide()`
  Gets the value of the `titleSide` property.
  `final boolean`
  `isLegendVisible()`
  Gets the value of the `legendVisible` property.
  `protected abstract void`
  `layoutChartChildren(double top, double left, double width, double height)`
  Called to update and layout the chart children available from getChartChildren()
  `protected void`
  `layoutChildren()`
  Invoked during the layout pass to layout this chart and all its content.
  `protected final ObjectProperty<Node>`
  `legendProperty()`
  The node to display as the Legend.
  `final ObjectProperty<Side>`
  `legendSideProperty()`
  The side of the chart where the legend should be displayed
  `final BooleanProperty`
  `legendVisibleProperty()`
  When true the chart will display a legend if the chart implementation supports a legend.
  `protected void`
  `requestChartLayout()`
  Call this when you know something has changed that needs the chart to be relayed out.
  `final void`
  `setAnimated(boolean value)`
  Sets the value of the `animated` property.
  `protected final void`
  `setLegend(Node value)`
  Sets the value of the `legend` property.
  `final void`
  `setLegendSide(Side value)`
  Sets the value of the `legendSide` property.
  `final void`
  `setLegendVisible(boolean value)`
  Sets the value of the `legendVisible` property.
  `final void`
  `setTitle(String value)`
  Sets the value of the `title` property.
  `final void`
  `setTitleSide(Side value)`
  Sets the value of the `titleSide` property.
  `protected boolean`
  `shouldAnimate()`
  This is used to check if any given animation should run.
  `final StringProperty`
  `titleProperty()`
  The chart title
  `final ObjectProperty<Side>`
  `titleSideProperty()`
  The side of the chart where the title is displayed

  ### Methods declared in class Region

  `backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isResizable, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapPositionX, snapPositionY, snapSize, snapSizeX, snapSizeY, snapSpace, snapSpaceX, snapSpaceY, snapToPixelProperty, widthProperty`

  ### Methods declared in class Parent

  `getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds`

  ### Methods declared in class Node

  `accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, focusVisibleProperty, focusWithinProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInitialCursor, getInitialFocusTraversable, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragDone, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, getViewOrder, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isFocusVisible, isFocusWithin, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookup, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragDoneProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, queryAccessibleAttribute, relocate, removeEventFilter, removeEventHandler, requestFocus, requestFocusTraversal, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragDone, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setViewOrder, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, viewOrderProperty, visibleProperty`

  ### Methods declared in class Object

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

  ### Methods declared in interface Styleable

  `getStyleableNode`

- ## Property Details

  - ### title

    public final StringProperty titleProperty
    The chart title
    See Also:
      - `getTitle()`
      - `setTitle(String)`
      - `titleProperty()`

  - ### titleSide

    public final ObjectProperty<Side> titleSideProperty
    The side of the chart where the title is displayed
    Default value:
      Side.TOP
    See Also:
      - `getTitleSide()`
      - `setTitleSide(Side)`
      - `titleSideProperty()`

  - ### legend

    protected final ObjectProperty<Node> legendProperty
    The node to display as the Legend. Subclasses can set a node here to be displayed on a side as the legend. If no legend is wanted then this can be set to null
    See Also:
      - `getLegend()`
      - `setLegend(Node)`
      - `legendProperty()`

  - ### legendVisible

    public final BooleanProperty legendVisibleProperty
    When true the chart will display a legend if the chart implementation supports a legend.
    See Also:
      - `isLegendVisible()`
      - `setLegendVisible(boolean)`
      - `legendVisibleProperty()`

  - ### legendSide

    public final ObjectProperty<Side> legendSideProperty
    The side of the chart where the legend should be displayed
    Default value:
      Side.BOTTOM
    See Also:
      - `getLegendSide()`
      - `setLegendSide(Side)`
      - `legendSideProperty()`

  - ### animated

    public final BooleanProperty animatedProperty
    When true any data changes will be animated.
    See Also:
      - `getAnimated()`
      - `setAnimated(boolean)`
      - `animatedProperty()`

- ## Constructor Details

  - ### Chart

    public Chart()
    Creates a new default Chart instance.

- ## Method Details

  - ### getTitle

    public final String getTitle()
    Gets the value of the `title` property.
    Property description:
      The chart title
    Returns:
      the value of the `title` property
    See Also:
      - `setTitle(String)`
      - `titleProperty()`

  - ### setTitle

    public final void setTitle(String value)
    Sets the value of the `title` property.
    Property description:
      The chart title
    Parameters:
      `value` - the value for the `title` property
    See Also:
      - `getTitle()`
      - `titleProperty()`

  - ### titleProperty

    public final StringProperty titleProperty()
    The chart title
    Returns:
      the `title` property
    See Also:
      - `getTitle()`
      - `setTitle(String)`

  - ### getTitleSide

    public final Side getTitleSide()
    Gets the value of the `titleSide` property.
    Property description:
      The side of the chart where the title is displayed
    Default value:
      Side.TOP
    Returns:
      the value of the `titleSide` property
    See Also:
      - `setTitleSide(Side)`
      - `titleSideProperty()`

  - ### setTitleSide

    public final void setTitleSide(Side value)
    Sets the value of the `titleSide` property.
    Property description:
      The side of the chart where the title is displayed
    Default value:
      Side.TOP
    Parameters:
      `value` - the value for the `titleSide` property
    See Also:
      - `getTitleSide()`
      - `titleSideProperty()`

  - ### titleSideProperty

    public final ObjectProperty<Side> titleSideProperty()
    The side of the chart where the title is displayed
    Default value:
      Side.TOP
    Returns:
      the `titleSide` property
    See Also:
      - `getTitleSide()`
      - `setTitleSide(Side)`

  - ### getLegend

    protected final Node getLegend()
    Gets the value of the `legend` property.
    Property description:
      The node to display as the Legend. Subclasses can set a node here to be displayed on a side as the legend. If no legend is wanted then this can be set to null
    Returns:
      the value of the `legend` property
    See Also:
      - `setLegend(Node)`
      - `legendProperty()`

  - ### setLegend

    protected final void setLegend(Node value)
    Sets the value of the `legend` property.
    Property description:
      The node to display as the Legend. Subclasses can set a node here to be displayed on a side as the legend. If no legend is wanted then this can be set to null
    Parameters:
      `value` - the value for the `legend` property
    See Also:
      - `getLegend()`
      - `legendProperty()`

  - ### legendProperty

    protected final ObjectProperty<Node> legendProperty()
    The node to display as the Legend. Subclasses can set a node here to be displayed on a side as the legend. If no legend is wanted then this can be set to null
    Returns:
      the `legend` property
    See Also:
      - `getLegend()`
      - `setLegend(Node)`

  - ### isLegendVisible

    public final boolean isLegendVisible()
    Gets the value of the `legendVisible` property.
    Property description:
      When true the chart will display a legend if the chart implementation supports a legend.
    Returns:
      the value of the `legendVisible` property
    See Also:
      - `setLegendVisible(boolean)`
      - `legendVisibleProperty()`

  - ### setLegendVisible

    public final void setLegendVisible(boolean value)
    Sets the value of the `legendVisible` property.
    Property description:
      When true the chart will display a legend if the chart implementation supports a legend.
    Parameters:
      `value` - the value for the `legendVisible` property
    See Also:
      - `isLegendVisible()`
      - `legendVisibleProperty()`

  - ### legendVisibleProperty

    public final BooleanProperty legendVisibleProperty()
    When true the chart will display a legend if the chart implementation supports a legend.
    Returns:
      the `legendVisible` property
    See Also:
      - `isLegendVisible()`
      - `setLegendVisible(boolean)`

  - ### getLegendSide

    public final Side getLegendSide()
    Gets the value of the `legendSide` property.
    Property description:
      The side of the chart where the legend should be displayed
    Default value:
      Side.BOTTOM
    Returns:
      the value of the `legendSide` property
    See Also:
      - `setLegendSide(Side)`
      - `legendSideProperty()`

  - ### setLegendSide

    public final void setLegendSide(Side value)
    Sets the value of the `legendSide` property.
    Property description:
      The side of the chart where the legend should be displayed
    Default value:
      Side.BOTTOM
    Parameters:
      `value` - the value for the `legendSide` property
    See Also:
      - `getLegendSide()`
      - `legendSideProperty()`

  - ### legendSideProperty

    public final ObjectProperty<Side> legendSideProperty()
    The side of the chart where the legend should be displayed
    Default value:
      Side.BOTTOM
    Returns:
      the `legendSide` property
    See Also:
      - `getLegendSide()`
      - `setLegendSide(Side)`

  - ### getAnimated

    public final boolean getAnimated()
    Indicates whether data changes will be animated or not.
    Returns:
      true if data changes will be animated and false otherwise.

  - ### setAnimated

    public final void setAnimated(boolean value)
    Sets the value of the `animated` property.
    Property description:
      When true any data changes will be animated.
    Parameters:
      `value` - the value for the `animated` property
    See Also:
      - `getAnimated()`
      - `animatedProperty()`

  - ### animatedProperty

    public final BooleanProperty animatedProperty()
    When true any data changes will be animated.
    Returns:
      the `animated` property
    See Also:
      - `getAnimated()`
      - `setAnimated(boolean)`

  - ### getChartChildren

    protected ObservableList<Node> getChartChildren()
    Modifiable and observable list of all content in the chart. This is where implementations of Chart should add any nodes they use to draw their chart. This excludes the legend and title which are looked after by this class.
    Returns:
      Observable list of plot children

  - ### animate

    protected void animate(Animation animation)
    Play the given animation on every frame of the animation the chart will be relayed out until the animation finishes. So to add a animation to a chart, create a animation on data model, during layoutChartContent() map data model to nodes then call this method with the animation.
    Parameters:
      `animation` - The animation to play

  - ### requestChartLayout

    protected void requestChartLayout()
    Call this when you know something has changed that needs the chart to be relayed out.

  - ### shouldAnimate

    protected boolean shouldAnimate()
    This is used to check if any given animation should run.

    The default implementation returns true if animation is enabled, the node is visible and in a scene, and reduced-motion mode is not enabled.

    Returns:
      `true` if animations should run, `false` otherwise

  - ### layoutChartChildren

    protected abstract void layoutChartChildren(double top, double left, double width, double height)
    Called to update and layout the chart children available from getChartChildren()
    Parameters:
      `top` - The top offset from the origin to account for any padding on the chart content
      `left` - The left offset from the origin to account for any padding on the chart content
      `width` - The width of the area to layout the chart within
      `height` - The height of the area to layout the chart within

  - ### layoutChildren

    protected void layoutChildren()
    Invoked during the layout pass to layout this chart and all its content.
    Overrides:
      `layoutChildren` in class `Parent`
    See Also:
      - Pixel Snapping

  - ### computeMinHeight

    protected double computeMinHeight(double width)
    Charts are sized outside in, user tells chart how much space it has and chart draws inside that. So minimum height is a constant 150.
    Overrides:
      `computeMinHeight` in class `Region`
    Parameters:
      `width` - the width on which to base the minimum height, or `-1` if no width is specified
    Returns:
      the computed minimum height
    See Also:
      - Pixel Snapping

  - ### computeMinWidth

    protected double computeMinWidth(double height)
    Charts are sized outside in, user tells chart how much space it has and chart draws inside that. So minimum width is a constant 200.
    Overrides:
      `computeMinWidth` in class `Region`
    Parameters:
      `height` - the height on which to base the minimum width, or `-1` if no height is specified
    Returns:
      the computed minimum width
    See Also:
      - Pixel Snapping

  - ### computePrefWidth

    protected double computePrefWidth(double height)
    Charts are sized outside in, user tells chart how much space it has and chart draws inside that. So preferred width is a constant 500.
    Overrides:
      `computePrefWidth` in class `Region`
    Parameters:
      `height` - the height on which to base the preferred width, or `-1` if no height is specified
    Returns:
      the computed preferred width
    See Also:
      - Pixel Snapping

  - ### computePrefHeight

    protected double computePrefHeight(double width)
    Charts are sized outside in, user tells chart how much space it has and chart draws inside that. So preferred height is a constant 400.
    Overrides:
      `computePrefHeight` in class `Region`
    Parameters:
      `width` - the width on which to base the preferred height, or `-1` if no width is specified
    Returns:
      the computed preferred height
    See Also:
      - Pixel Snapping

  - ### getClassCssMetaData

    public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData()
    Gets the `CssMetaData` associated with this class, which may include the `CssMetaData` of its superclasses.
    Returns:
      the `CssMetaData`
    Since:
      JavaFX 8.0

  - ### getCssMetaData

    public List<CssMetaData<? extends Styleable, ?>> getCssMetaData()
    This method should delegate to `Node.getClassCssMetaData()` so that a Node's CssMetaData can be accessed without the need for reflection.
    Specified by:
      `getCssMetaData` in interface `Styleable`
    Overrides:
      `getCssMetaData` in class `Region`
    Returns:
      The CssMetaData associated with this node, which may include the CssMetaData of its superclasses.
    Since:
      JavaFX 8.0