Control (JavaFX 17)

Module javafx.controls
Package javafx.scene.control

## Class Control

- java.lang.Object
- - javafx.scene.Node
  - - javafx.scene.Parent
    - - javafx.scene.layout.Region
      - - javafx.scene.control.Control

- All Implemented Interfaces:
    `Styleable`, `EventTarget`, `Skinnable`
  Direct Known Subclasses:
    `Accordion`, `ButtonBar`, `ChoiceBox`, `ComboBoxBase`, `HTMLEditor`, `Labeled`, `ListView`, `MenuBar`, `Pagination`, `ProgressIndicator`, `ScrollBar`, `ScrollPane`, `Separator`, `Slider`, `Spinner`, `SplitPane`, `TableView`, `TabPane`, `TextInputControl`, `ToolBar`, `TreeTableView`, `TreeView`

      public abstract class Control
      extends Region
      implements Skinnable

  Base class for all user interface controls. A "Control" is a node in the scene graph which can be manipulated by the user. Controls provide additional variables and behaviors beyond those of Node to support common user interactions in a manner which is consistent and predictable for the user.

  Additionally, controls support explicit skinning to make it easy to leverage the functionality of a control while customizing its appearance.

  See specific Control subclasses for information on how to use individual types of controls.

  Most controls have their focusTraversable property set to true by default, however read-only controls such as `Label` and `ProgressIndicator`, and some controls that are containers `ScrollPane` and `ToolBar` do not. Consult individual control documentation for details.

  Since:
    JavaFX 2.0

- - ### Property Summary

    Properties
    Type | Property | Description
    --- | --- | ---
    `ObjectProperty<ContextMenu>` | `contextMenu` | The ContextMenu to show for this control.
    `ObjectProperty<Skin<?>>` | `skin` | Skin is responsible for rendering this `Control`.
    `ObjectProperty<Tooltip>` | `tooltip` | The ToolTip for this control.

    - ### Properties declared in class javafx.scene.layout.Region

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

    - ### Properties declared in class javafx.scene.Parent

      `needsLayout`

    - ### Properties declared in 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 declared in class javafx.scene.layout.Region

      `USE_COMPUTED_SIZE, USE_PREF_SIZE`

    - ### Fields declared in class javafx.scene.Node

      `BASELINE_OFFSET_SAME_AS_HEIGHT`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `Control()` | Create a new Control.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `protected double` | `computeMaxHeight​(double width)` | Computes the maximum allowable height of the Control, based on the provided width.
    `protected double` | `computeMaxWidth​(double height)` | Computes the maximum allowable width of the Control, based on the provided height.
    `protected double` | `computeMinHeight​(double width)` | Computes the minimum allowable height of the Control, based on the provided width.
    `protected double` | `computeMinWidth​(double height)` | Computes the minimum allowable width of the Control, based on the provided height.
    `ObjectProperty<ContextMenu>` | `contextMenuProperty()` | The ContextMenu to show for this control.
    `protected Skin<?>` | `createDefaultSkin()` | Create a new instance of the default skin for this control.
    `static List<CssMetaData<? extends Styleable,​?>>` | `getClassCssMetaData()` |
    `ContextMenu` | `getContextMenu()` | Gets the value of the property contextMenu.
    `protected List<CssMetaData<? extends Styleable,​?>>` | `getControlCssMetaData()` |
    `List<CssMetaData<? extends Styleable,​?>>` | `getCssMetaData()` | This method returns a `List` containing all `CssMetaData` for both this Control (returned from `getControlCssMetaData()` and its `Skin`, assuming the `skin property` is a `SkinBase`.
    `protected Boolean` | `getInitialFocusTraversable()` | Returns the initial focus traversable state of this control, for use by the JavaFX CSS engine to correctly set its initial value.
    `Tooltip` | `getTooltip()` | Gets the value of the property tooltip.
    `boolean` | `isResizable()` | Returns `true` since all Controls are resizable.
    `void` | `setContextMenu​(ContextMenu value)` | Sets the value of the property contextMenu.
    `void` | `setTooltip​(Tooltip value)` | Sets the value of the property tooltip.
    `ObjectProperty<Skin<?>>` | `skinProperty()` | Skin is responsible for rendering this `Control`.
    `ObjectProperty<Tooltip>` | `tooltipProperty()` | The ToolTip for this control.

    - ### Methods declared in class javafx.scene.layout.Region

      `backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computePrefHeight, computePrefWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, 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 javafx.scene.Parent

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

    - ### Methods declared in 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, 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, 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, lookup, 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, queryAccessibleAttribute, 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 declared in class java.lang.Object

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

    - ### Methods declared in interface javafx.scene.control.Skinnable

      `getSkin, setSkin`

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

      `getStyleableNode, getStyleClass`

- - ### Property Detail

    - #### skin

          public final ObjectProperty<Skin<?>> skinProperty

      Skin is responsible for rendering this `Control`. From the perspective of the `Control`, the `Skin` is a black box. It listens and responds to changes in state in a `Control`.

      There is a one-to-one relationship between a `Control` and its `Skin`. Every `Skin` maintains a back reference to the `Control` via the `Skin.getSkinnable()` method.

      A skin may be null.

      Specified by:
        `skinProperty` in interface `Skinnable`
      See Also:
        `Skinnable.getSkin()`, `Skinnable.setSkin(Skin)`

    - #### tooltip

          public final ObjectProperty<Tooltip> tooltipProperty

      The ToolTip for this control.
      See Also:
        `getTooltip()`, `setTooltip(Tooltip)`

    - #### contextMenu

          public final ObjectProperty<ContextMenu> contextMenuProperty

      The ContextMenu to show for this control.
      See Also:
        `getContextMenu()`, `setContextMenu(ContextMenu)`

  - ### Constructor Detail

    - #### Control

          protected Control()

      Create a new Control.

  - ### Method Detail

    - #### skinProperty

          public final ObjectProperty<Skin<?>> skinProperty()

      Skin is responsible for rendering this `Control`. From the perspective of the `Control`, the `Skin` is a black box. It listens and responds to changes in state in a `Control`.

      There is a one-to-one relationship between a `Control` and its `Skin`. Every `Skin` maintains a back reference to the `Control` via the `Skin.getSkinnable()` method.

      A skin may be null.

      Specified by:
        `skinProperty` in interface `Skinnable`
      See Also:
        `Skinnable.getSkin()`, `Skinnable.setSkin(Skin)`

    - #### tooltipProperty

          public final ObjectProperty<Tooltip> tooltipProperty()

      The ToolTip for this control.
      See Also:
        `getTooltip()`, `setTooltip(Tooltip)`

    - #### setTooltip

          public final void setTooltip​(Tooltip value)

      Sets the value of the property tooltip.
      Property description:
        The ToolTip for this control.

    - #### getTooltip

          public final Tooltip getTooltip()

      Gets the value of the property tooltip.
      Property description:
        The ToolTip for this control.

    - #### contextMenuProperty

          public final ObjectProperty<ContextMenu> contextMenuProperty()

      The ContextMenu to show for this control.
      See Also:
        `getContextMenu()`, `setContextMenu(ContextMenu)`

    - #### setContextMenu

          public final void setContextMenu​(ContextMenu value)

      Sets the value of the property contextMenu.
      Property description:
        The ContextMenu to show for this control.

    - #### getContextMenu

          public final ContextMenu getContextMenu()

      Gets the value of the property contextMenu.
      Property description:
        The ContextMenu to show for this control.

    - #### isResizable

          public boolean isResizable()

      Returns `true` since all Controls are resizable.
      Overrides:
        `isResizable` in class `Region`
      Returns:
        whether this node can be resized by its parent during layout
      See Also:
        `Node.getContentBias()`, `Node.minWidth(double)`, `Node.minHeight(double)`, `Node.prefWidth(double)`, `Node.prefHeight(double)`, `Node.maxWidth(double)`, `Node.maxHeight(double)`, `Node.resize(double, double)`, `Node.getLayoutBounds()`

    - #### computeMinWidth

          protected double computeMinWidth​(double height)

      Computes the minimum allowable width of the Control, based on the provided height. The minimum width is not calculated within the Control, instead the calculation is delegated to the `Node.minWidth(double)` method of the `Skin`. If the Skin is null, the returned value is 0.
      Overrides:
        `computeMinWidth` in class `Region`
      Parameters:
        `height` - The height of the Control, in case this value might dictate the minimum width.
      Returns:
        A double representing the minimum width of this control.

    - #### computeMinHeight

          protected double computeMinHeight​(double width)

      Computes the minimum allowable height of the Control, based on the provided width. The minimum height is not calculated within the Control, instead the calculation is delegated to the `Node.minHeight(double)` method of the `Skin`. If the Skin is null, the returned value is 0.
      Overrides:
        `computeMinHeight` in class `Region`
      Parameters:
        `width` - The width of the Control, in case this value might dictate the minimum height.
      Returns:
        A double representing the minimum height of this control.

    - #### computeMaxWidth

          protected double computeMaxWidth​(double height)

      Computes the maximum allowable width of the Control, based on the provided height. The maximum width is not calculated within the Control, instead the calculation is delegated to the `Node.maxWidth(double)` method of the `Skin`. If the Skin is null, the returned value is 0.
      Overrides:
        `computeMaxWidth` in class `Region`
      Parameters:
        `height` - The height of the Control, in case this value might dictate the maximum width.
      Returns:
        A double representing the maximum width of this control.

    - #### computeMaxHeight

          protected double computeMaxHeight​(double width)

      Computes the maximum allowable height of the Control, based on the provided width. The maximum height is not calculated within the Control, instead the calculation is delegated to the `Node.maxHeight(double)` method of the `Skin`. If the Skin is null, the returned value is 0.
      Overrides:
        `computeMaxHeight` in class `Region`
      Parameters:
        `width` - The width of the Control, in case this value might dictate the maximum height.
      Returns:
        A double representing the maximum height of this control.

    - #### createDefaultSkin

          protected Skin<?> createDefaultSkin()

      Create a new instance of the default skin for this control. This is called to create a skin for the control if no skin is provided via CSS `-fx-skin` or set explicitly in a sub-class with `setSkin(...)`.
      Returns:
        new instance of default skin for this control. If null then the control will have no skin unless one is provided by css.
      Since:
        JavaFX 8.0

    - #### 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 final List<CssMetaData<? extends Styleable,​?>> getCssMetaData()

      This method returns a `List` containing all `CssMetaData` for both this Control (returned from `getControlCssMetaData()` and its `Skin`, assuming the `skin property` is a `SkinBase`.

      Developers who wish to provide custom CssMetaData are therefore encouraged to override `getControlCssMetaData()` or `SkinBase.getCssMetaData()`, depending on where the CssMetaData resides.

      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

    - #### getControlCssMetaData

          protected List<CssMetaData<? extends Styleable,​?>> getControlCssMetaData()

      Returns:
        unmodifiable list of the controls css styleable properties
      Since:
        JavaFX 8.0

    - #### getInitialFocusTraversable

          protected Boolean getInitialFocusTraversable()

      Returns the initial focus traversable state of this control, for use by the JavaFX CSS engine to correctly set its initial value. By default all UI controls are focus traversable, so this method is overridden in Control to set the initial traversable state to true.
      Overrides:
        `getInitialFocusTraversable` in class `Node`
      Returns:
        the initial focus traversable state of this control
      Since:
        9