Chart (JavaFX 13)

Module javafx.controls
Package javafx.scene.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
    --- | --- | ---
    `BooleanProperty` | `animated` | When true any data changes will be animated.
    `protected ObjectProperty<Node>` | `legend` | The node to display as the Legend.
    `ObjectProperty<Side>` | `legendSide` | The side of the chart where the legend should be displayed
    `BooleanProperty` | `legendVisible` | When true the chart will display a legend if the chart implementation supports a legend.
    `StringProperty` | `title` | The chart title
    `ObjectProperty<Side>` | `titleSide` | The side of the chart where the title is displayed

    - ### Properties inherited from class javafx.scene.layout.Region

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

    - ### Properties inherited from class javafx.scene.Parent

      `needsLayout`

    - ### Properties inherited from class javafx.scene.Node

      `accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, 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 inherited from class javafx.scene.layout.Region

      `USE_COMPUTED_SIZE, USE_PREF_SIZE`

    - ### Fields inherited from class javafx.scene.Node

      `BASELINE_OFFSET_SAME_AS_HEIGHT`

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    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.
    `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.
    `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()` |
    `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 Node` | `getLegend()` | Gets the value of the property legend.
    `Side` | `getLegendSide()` | Gets the value of the property legendSide.
    `String` | `getTitle()` | Gets the value of the property title.
    `Side` | `getTitleSide()` | Gets the value of the property titleSide.
    `boolean` | `isLegendVisible()` | Gets the value of the property legendVisible.
    `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 ObjectProperty<Node>` | `legendProperty()` | The node to display as the Legend.
    `ObjectProperty<Side>` | `legendSideProperty()` | The side of the chart where the legend should be displayed
    `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.
    `void` | `setAnimated​(boolean value)` | Sets the value of the property animated.
    `protected void` | `setLegend​(Node value)` | Sets the value of the property legend.
    `void` | `setLegendSide​(Side value)` | Sets the value of the property legendSide.
    `void` | `setLegendVisible​(boolean value)` | Sets the value of the property legendVisible.
    `void` | `setTitle​(String value)` | Sets the value of the property title.
    `void` | `setTitleSide​(Side value)` | Sets the value of the property titleSide.
    `protected boolean` | `shouldAnimate()` | This is used to check if any given animation should run.
    `StringProperty` | `titleProperty()` | The chart title
    `ObjectProperty<Side>` | `titleSideProperty()` | The side of the chart where the title is displayed

    - ### Methods inherited from class javafx.scene.layout.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 inherited from class javafx.scene.Parent

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

    - ### Methods inherited from class javafx.scene.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, 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, 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, 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, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, 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, relocate, removeEventFilter, removeEventHandler, requestFocus, 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, 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 inherited from class java.lang.Object

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

    - ### Methods inherited from interface javafx.css.Styleable

      `getStyleableNode`

- - ### Property Detail

    - #### title

          public final StringProperty titleProperty

      The chart title
      See Also:
        `getTitle()`, `setTitle(String)`

    - #### 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)`

    - #### 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)`

    - #### 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)`

    - #### 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)`

    - #### animated

          public final BooleanProperty animatedProperty

      When true any data changes will be animated.
      See Also:
        `getAnimated()`, `setAnimated(boolean)`

  - ### Constructor Detail

    - #### Chart

          public Chart()

      Creates a new default Chart instance.

  - ### Method Detail

    - #### getTitle

          public final String getTitle()

      Gets the value of the property title.
      Property description:
        The chart title

    - #### setTitle

          public final void setTitle​(String value)

      Sets the value of the property title.
      Property description:
        The chart title

    - #### titleProperty

          public final StringProperty titleProperty()

      The chart title
      See Also:
        `getTitle()`, `setTitle(String)`

    - #### getTitleSide

          public final Side getTitleSide()

      Gets the value of the property titleSide.
      Property description:
        The side of the chart where the title is displayed
      Default value:
        Side.TOP

    - #### setTitleSide

          public final void setTitleSide​(Side value)

      Sets the value of the property titleSide.
      Property description:
        The side of the chart where the title is displayed
      Default value:
        Side.TOP

    - #### titleSideProperty

          public final ObjectProperty<Side> titleSideProperty()

      The side of the chart where the title is displayed
      Default value:
        Side.TOP
      See Also:
        `getTitleSide()`, `setTitleSide(Side)`

    - #### getLegend

          protected final Node getLegend()

      Gets the value of the property legend.
      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

    - #### setLegend

          protected final void setLegend​(Node value)

      Sets the value of the property legend.
      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

    - #### 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
      See Also:
        `getLegend()`, `setLegend(Node)`

    - #### isLegendVisible

          public final boolean isLegendVisible()

      Gets the value of the property legendVisible.
      Property description:
        When true the chart will display a legend if the chart implementation supports a legend.

    - #### setLegendVisible

          public final void setLegendVisible​(boolean value)

      Sets the value of the property legendVisible.
      Property description:
        When true the chart will display a legend if the chart implementation supports a legend.

    - #### legendVisibleProperty

          public final BooleanProperty legendVisibleProperty()

      When true the chart will display a legend if the chart implementation supports a legend.
      See Also:
        `isLegendVisible()`, `setLegendVisible(boolean)`

    - #### getLegendSide

          public final Side getLegendSide()

      Gets the value of the property legendSide.
      Property description:
        The side of the chart where the legend should be displayed
      Default value:
        Side.BOTTOM

    - #### setLegendSide

          public final void setLegendSide​(Side value)

      Sets the value of the property legendSide.
      Property description:
        The side of the chart where the legend should be displayed
      Default value:
        Side.BOTTOM

    - #### legendSideProperty

          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)`

    - #### 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 property animated.
      Property description:
        When true any data changes will be animated.

    - #### animatedProperty

          public final BooleanProperty animatedProperty()

      When true any data changes will be animated.
      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 final boolean shouldAnimate()

      This is used to check if any given animation should run. It returns true if animation is enabled and the node is visible and in a scene.
      Returns:
        true if animation is enabled and the node is visible and in a scene

    - #### 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`

    - #### 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 that should be used if min height depends on it
      Returns:
        the computed minimum height for this region

    - #### 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 that should be used if min width depends on it
      Returns:
        the computed minimum width of this region

    - #### 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 that should be used if preferred width depends on it
      Returns:
        the computed preferred width for this region

    - #### 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 that should be used if preferred height depends on it
      Returns:
        the computed preferred height for this region

    - #### getClassCssMetaData

          public static List<CssMetaData<? extends Styleable,​?>> getClassCssMetaData()

      Returns:
        The CssMetaData associated with this class, which may include the CssMetaData of its superclasses.
      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