HeaderBar (JavaFX 27)
Description: declaration: module: javafx.graphics, package: javafx.scene.layout, class: HeaderBar

# Class HeaderBar

java.lang.Object
javafx.scene.Node
javafx.scene.Parent
javafx.scene.layout.Region
javafx.scene.layout.HeaderBar

All Implemented Interfaces:
  `Styleable, EventTarget`

public class HeaderBar extends Region
A client-area header bar that is used as a replacement for the system-provided header bar in stages with the `StageStyle.EXTENDED` style. This class enables the click-and-drag to move and double-click to maximize behaviors that are usually afforded by system-provided header bars. The entire `HeaderBar` background is draggable by default, but its content is not. Applications can specify draggable content nodes of the `HeaderBar` with the `dragType` attached property.

`HeaderBar` is a layout container that allows applications to place scene graph nodes in three areas: `left`, `center`, and `right`. All areas can be `null`. The default `minHeight` of the `HeaderBar` is set to match `systemMinHeight` (unless explicitly set by a stylesheet or application code), which usually corresponds to the height of the system-provided header buttons.

## Single header bar

Most applications should only add a single `HeaderBar` to the scene graph, placed at the top of the scene and extending its entire width. This ensures that the reported values for `leftSystemInset` and `rightSystemInset`, which describe the areas reserved for the system-provided header buttons, correctly align with the location of the `HeaderBar` and are taken into account when the contents of the `HeaderBar` are laid out.

## Multiple header bars

Applications that use multiple header bars might need to configure the additional padding inserted into the layout to account for the system-reserved areas. For example, when two header bars are placed next to each other in the horizontal direction, the default configuration adds unnecessary additional padding between the two header bars. In this case, the `leftSystemPadding` and `rightSystemPadding` properties can be used to remove the padding that is not needed.

## Header button height

Applications can specify the preferred height for the system-provided header buttons by setting the `systemButtonHeight` attached property for the `Stage` associated with the header bar. This can be used to achieve a more cohesive visual appearance by having the system-provided header buttons match the height of the client-area header bar.

## Color scheme

The color scheme of the system-provided default header buttons is automatically adjusted to match the scene color scheme. Applications can specify a different color scheme for the system-provided header buttons with the `systemColorScheme` attached property.

## Custom header buttons

If more control over the header buttons is desired, applications can opt out of the system-provided header buttons by setting the `systemButtonHeight` attached property for the `Stage` associated with the header bar to zero and place custom header buttons in the JavaFX scene graph instead. Any JavaFX control can be used as a custom header button by specifying its semantic type with the `buttonType` attached property.

## System menu

Some platforms support a system menu that can be summoned by right-clicking the draggable area. The system menu will not be shown when:

1. the `Stage` is in full-screen mode, or
2. the `HeaderBar` has consumed the `ContextMenuEvent.CONTEXT_MENU_REQUESTED` event.

## Layout constraints

The `left` and `right` children will be resized to their preferred widths and extend the height of the `HeaderBar`. The `center` child will be resized to fill the available space. `HeaderBar` honors the minimum, preferred, and maximum sizes of its children. If a child's resizable range prevents it from being resized to fit within its position, it will be vertically centered relative to the available space; this alignment can be customized with a layout constraint.

An application may set constraints on individual children to customize their layout. For each constraint, `HeaderBar` provides static getter and setter methods.

Layout constraints of `HeaderBar`
Constraint | Type | Description
--- | --- | ---
alignment | `Pos` | The alignment of the child within its area of the `HeaderBar`.
margin | `Insets` | Margin space around the outside of the child.

## Special layout of centered child

If a child is configured to be centered in the `center` area (i.e. its `alignment` constraint is either `null`, `Pos.CENTER`, `Pos.TOP_CENTER`, or `Pos.BOTTOM_CENTER`), it will be centered with respect to the entire header bar, and not with respect to the `center` area only. This means that, for a header bar that extends the entire width of the `Stage`, the child will appear to be horizontally centered within the `Stage`.

If a child should instead be centered with respect to the `center` area only, a possible solution is to place another layout container (such as `BorderPane`) in the `center` area, and then center the child within the other layout container.

## Example

Usually, `HeaderBar` is placed in a root container like `BorderPane` to align it with the top of the scene:

    public class MyApp extends Application {
        @Override
        public void start(Stage stage) {
            var button = new Button("My button");
            HeaderBar.setAlignment(button, Pos.CENTER_LEFT);
            HeaderBar.setMargin(button, new Insets(5));

            var headerBar = new HeaderBar();
            headerBar.setCenter(button);

            var root = new BorderPane();
            root.setTop(headerBar);

            stage.setScene(new Scene(root));
            stage.initStyle(StageStyle.EXTENDED);
            stage.show();
        }
    }

Since:
  27

- ## Property Summary

  Properties
  Type
  Property
  Description
  `final ObjectProperty<Node>`
  `center`
  The center area of the `HeaderBar`.
  `final ObjectProperty<Node>`
  `left`
  The left area of the `HeaderBar`.
  `final BooleanProperty`
  `leftSystemPadding`
  Specifies whether additional padding should be added to the left side of the `HeaderBar`.
  `final ObjectProperty<Node>`
  `right`
  The right area of the `HeaderBar`.
  `final BooleanProperty`
  `rightSystemPadding`
  Specifies whether additional padding should be added to the right side of the `HeaderBar`.

  ### 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
  Modifier and Type
  Field
  Description
  `static final double`
  `USE_DEFAULT_SIZE`
  Sentinel value that can be used for the `systemButtonHeight` attached property to indicate that the platform should choose the platform-specific default button height.

  ### 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
  `HeaderBar()`
  Creates a new `HeaderBar`.
  `HeaderBar(Node left, Node center, Node right)`
  Creates a new `HeaderBar` with the specified children.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ObjectProperty<HeaderButtonType>`
  `buttonTypeProperty(Node child)`
  Specifies the `HeaderButtonType` of the child, indicating its semantic use in the header bar.
  `final ObjectProperty<Node>`
  `centerProperty()`
  The center area of the `HeaderBar`.
  `static ObjectProperty<HeaderDragType>`
  `dragTypeProperty(Node child)`
  Specifies the `HeaderDragType` of the child, indicating whether it is a draggable part of the `HeaderBar`.
  `static Pos`
  `getAlignment(Node child)`
  Returns the child's alignment in the `HeaderBar`.
  `static HeaderButtonType`
  `getButtonType(Node child)`
  Gets the value of the `buttonType` attached property for the specified child.
  `final Node`
  `getCenter()`
  Gets the value of the `center` property.
  `static HeaderDragType`
  `getDragType(Node child)`
  Gets the value of the `dragType` attached property for the specified child.
  `final Node`
  `getLeft()`
  Gets the value of the `left` property.
  `static Dimension2D`
  `getLeftSystemInset(Stage stage)`
  Gets the value of the `leftSystemInset` attached property for the specified `Stage`.
  `static Insets`
  `getMargin(Node child)`
  Returns the child's margin.
  `final Node`
  `getRight()`
  Gets the value of the `right` property.
  `static Dimension2D`
  `getRightSystemInset(Stage stage)`
  Gets the value of the `rightSystemInset` attached property for the specified `Stage`.
  `static double`
  `getSystemButtonHeight(Stage stage)`
  Gets the value of the `systemButtonHeight` attached property for the specified `Stage`.
  `static ColorScheme`
  `getSystemColorScheme(Stage stage)`
  Gets the value of the `systemColorScheme` attached property for the specified `Stage`.
  `static double`
  `getSystemMinHeight(Stage stage)`
  Gets the value of the `systemMinHeight` attached property for the specified `Stage`.
  `final boolean`
  `isLeftSystemPadding()`
  Gets the value of the `leftSystemPadding` property.
  `final boolean`
  `isRightSystemPadding()`
  Gets the value of the `rightSystemPadding` property.
  `final ObjectProperty<Node>`
  `leftProperty()`
  The left area of the `HeaderBar`.
  `static ReadOnlyObjectProperty<Dimension2D>`
  `leftSystemInsetProperty(Stage stage)`
  Describes the size of the left system-reserved inset for the specified `Stage`, which is an area reserved for the iconify, maximize, and close window buttons.
  `final BooleanProperty`
  `leftSystemPaddingProperty()`
  Specifies whether additional padding should be added to the left side of the `HeaderBar`.
  `final ObjectProperty<Node>`
  `rightProperty()`
  The right area of the `HeaderBar`.
  `static ReadOnlyObjectProperty<Dimension2D>`
  `rightSystemInsetProperty(Stage stage)`
  Describes the size of the right system-reserved inset for the specified `Stage`, which is an area reserved for the iconify, maximize, and close window buttons.
  `final BooleanProperty`
  `rightSystemPaddingProperty()`
  Specifies whether additional padding should be added to the right side of the `HeaderBar`.
  `static void`
  `setAlignment(Node child, Pos value)`
  Sets the alignment for the child when contained in a `HeaderBar`.
  `static void`
  `setButtonType(Node child, HeaderButtonType value)`
  Sets the value of the `buttonType` attached property for the specified child.
  `final void`
  `setCenter(Node value)`
  Sets the value of the `center` property.
  `static void`
  `setDragType(Node child, HeaderDragType value)`
  Sets the value of the `dragType` attached property for the specified child.
  `final void`
  `setLeft(Node value)`
  Sets the value of the `left` property.
  `final void`
  `setLeftSystemPadding(boolean value)`
  Sets the value of the `leftSystemPadding` property.
  `static void`
  `setMargin(Node child, Insets value)`
  Sets the margin for the child when contained in a `HeaderBar`.
  `final void`
  `setRight(Node value)`
  Sets the value of the `right` property.
  `final void`
  `setRightSystemPadding(boolean value)`
  Sets the value of the `rightSystemPadding` property.
  `static void`
  `setSystemButtonHeight(Stage stage, double height)`
  Sets the value of the `systemButtonHeight` attached property for the specified `Stage`.
  `static void`
  `setSystemColorScheme(Stage stage, ColorScheme value)`
  Sets the value of the `systemColorScheme` attached property for the specified `Stage`.
  `static DoubleProperty`
  `systemButtonHeightProperty(Stage stage)`
  Specifies the preferred height of the system-provided header buttons for the specified `Stage`.
  `static ObjectProperty<ColorScheme>`
  `systemColorSchemeProperty(Stage stage)`
  Specifies the color scheme of the system-provided header buttons for the specified `Stage`.
  `static ReadOnlyDoubleProperty`
  `systemMinHeightProperty(Stage stage)`
  Specifies the system-recommended minimum height for the `HeaderBar` for the specified `Stage`, which usually corresponds to the height of the default header buttons.

  ### Methods declared in class Region

  `backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, getBackground, getBorder, getClassCssMetaData, getCssMetaData, 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, layoutChildren, 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

  - ### left

    public final ObjectProperty<Node> leftProperty
    The left area of the `HeaderBar`.
    Default value:
      `null`
    See Also:
      - `getLeft()`
      - `setLeft(Node)`
      - `leftProperty()`

  - ### center

    public final ObjectProperty<Node> centerProperty
    The center area of the `HeaderBar`.
    Default value:
      `null`
    See Also:
      - `getCenter()`
      - `setCenter(Node)`
      - `centerProperty()`

  - ### right

    public final ObjectProperty<Node> rightProperty
    The right area of the `HeaderBar`.
    Default value:
      `null`
    See Also:
      - `getRight()`
      - `setRight(Node)`
      - `rightProperty()`

  - ### leftSystemPadding

    public final BooleanProperty leftSystemPaddingProperty
    Specifies whether additional padding should be added to the left side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the left side of the `HeaderBar`.

    Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    See Also:
      - `isLeftSystemPadding()`
      - `setLeftSystemPadding(boolean)`
      - `leftSystemPaddingProperty()`

  - ### rightSystemPadding

    public final BooleanProperty rightSystemPaddingProperty
    Specifies whether additional padding should be added to the right side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the right side of the `HeaderBar`.

    Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    See Also:
      - `isRightSystemPadding()`
      - `setRightSystemPadding(boolean)`
      - `rightSystemPaddingProperty()`

- ## Field Details

  - ### USE_DEFAULT_SIZE

    public static final double USE_DEFAULT_SIZE
    Sentinel value that can be used for the `systemButtonHeight` attached property to indicate that the platform should choose the platform-specific default button height.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### HeaderBar

    public HeaderBar()
    Creates a new `HeaderBar`.

  - ### HeaderBar

    public HeaderBar(Node left, Node center, Node right)
    Creates a new `HeaderBar` with the specified children.
    Parameters:
      `left` - the left node, or `null`
      `center` - the center node, or `null`
      `right` - the right node, or `null`

- ## Method Details

  - ### setDragType

    public static void setDragType(Node child, HeaderDragType value)
    Sets the value of the `dragType` attached property for the specified child.
    Parameters:
      `child` - the child node
      `value` - the `HeaderDragType`, or `null` to remove the flag

  - ### getDragType

    public static HeaderDragType getDragType(Node child)
    Gets the value of the `dragType` attached property for the specified child.
    Parameters:
      `child` - the child node
    Returns:
      the `HeaderDragType`, or `null` if not set

  - ### dragTypeProperty

    public static ObjectProperty<HeaderDragType> dragTypeProperty(Node child)
    Specifies the `HeaderDragType` of the child, indicating whether it is a draggable part of the `HeaderBar`. A value of `null` indicates that the drag type is not set.
    Default value:
      `null`
    Parameters:
      `child` - the child node
    Returns:
      the `dragType` property

  - ### setButtonType

    public static void setButtonType(Node child, HeaderButtonType value)
    Sets the value of the `buttonType` attached property for the specified child.
    Parameters:
      `child` - the child node
      `value` - the `HeaderButtonType`, or `null`

  - ### getButtonType

    public static HeaderButtonType getButtonType(Node child)
    Gets the value of the `buttonType` attached property for the specified child.
    Parameters:
      `child` - the child node
    Returns:
      the `HeaderButtonType`, or `null`

  - ### buttonTypeProperty

    public static ObjectProperty<HeaderButtonType> buttonTypeProperty(Node child)
    Specifies the `HeaderButtonType` of the child, indicating its semantic use in the header bar.

    This property can be set on any `Node`. Specifying a `HeaderButtonType` also provides the behavior associated with the button type. If the default behavior is not desired, applications can register an event filter on the child node that consumes the `MouseEvent.MOUSE_RELEASED` event.

    Default value:
      `null`
    Parameters:
      `child` - the child node
    Returns:
      the `buttonType` property

  - ### setSystemColorScheme

    public static void setSystemColorScheme(Stage stage, ColorScheme value)
    Sets the value of the `systemColorScheme` attached property for the specified `Stage`.
    Parameters:
      `stage` - the `Stage`
      `value` - the color scheme, or `null` to indicate no preference

  - ### getSystemColorScheme

    public static ColorScheme getSystemColorScheme(Stage stage)
    Gets the value of the `systemColorScheme` attached property for the specified `Stage`.
    Parameters:
      `stage` - the `Stage`
    Returns:
      the color scheme

  - ### systemColorSchemeProperty

    public static ObjectProperty<ColorScheme> systemColorSchemeProperty(Stage stage)
    Specifies the color scheme of the system-provided header buttons for the specified `Stage`.

    This is a null-coalescing property: if set to `null` (using the setter method, `WritableValue.setValue(Object)`, or with a binding), the property evaluates to the value of `Scene.Preferences.colorSchemeProperty()`. Likewise, specifying a non-null value will override the scene-provided value. Overriding the scene-provided color scheme is usually only necessary in the rare case when an application needs different color schemes for header buttons and the window content (bright title bar in dark mode, or a dark title bar in light mode).

    The specified color scheme is only a hint for the platform window toolkit and may be ignored.

    Default value:
      `Scene.Preferences.getColorScheme()`
    Parameters:
      `stage` - the `Stage`
    Returns:
      the `systemColorScheme` attached property
    See Also:
      - `Scene.Preferences.colorSchemeProperty()`

  - ### setSystemButtonHeight

    public static void setSystemButtonHeight(Stage stage, double height)
    Sets the value of the `systemButtonHeight` attached property for the specified `Stage`.
    Parameters:
      `stage` - the `Stage`
      `height` - the preferred height, or 0 to hide the system-provided header buttons

  - ### getSystemButtonHeight

    public static double getSystemButtonHeight(Stage stage)
    Gets the value of the `systemButtonHeight` attached property for the specified `Stage`.
    Parameters:
      `stage` - the `Stage`
    Returns:
      the preferred height of the system-provided header buttons

  - ### systemButtonHeightProperty

    public static DoubleProperty systemButtonHeightProperty(Stage stage)
    Specifies the preferred height of the system-provided header buttons for the specified `Stage`.

    Any value except zero and `USE_DEFAULT_SIZE` is only a hint for the platform window toolkit. The platform might accommodate the preferred height in various ways, such as by stretching the header buttons (fully or partially) to fill the preferred height, or centering the header buttons (fully or partially) within the preferred height. Some platforms might only accommodate the preferred height within platform-specific constraints, or ignore it entirely.

    Setting the preferred height to zero hides the system-provided header buttons, allowing applications to use custom header buttons instead (see `setButtonType(Node, HeaderButtonType)`).

    The default value `USE_DEFAULT_SIZE` indicates that the platform should choose the button height.

    Default value:
      `USE_DEFAULT_SIZE`
    Parameters:
      `stage` - the `Stage`
    Returns:
      the `systemButtonHeight` attached property

  - ### getSystemMinHeight

    public static double getSystemMinHeight(Stage stage)
    Gets the value of the `systemMinHeight` attached property for the specified `Stage`.
    Parameters:
      `stage` - the `Stage`
    Returns:
      the system-recommended minimum height for the `HeaderBar`

  - ### systemMinHeightProperty

    public static ReadOnlyDoubleProperty systemMinHeightProperty(Stage stage)
    Specifies the system-recommended minimum height for the `HeaderBar` for the specified `Stage`, which usually corresponds to the height of the default header buttons. Applications can use this value as a sensible lower limit for the height of the `HeaderBar`.

    By default, `minHeight` is set to the value of `systemMinHeight`, unless `minHeight` is explicitly set by a stylesheet or application code.

    Parameters:
      `stage` - the `Stage`
    Returns:
      the `systemMinHeight` attached property

  - ### leftSystemInsetProperty

    public static ReadOnlyObjectProperty<Dimension2D> leftSystemInsetProperty(Stage stage)
    Describes the size of the left system-reserved inset for the specified `Stage`, which is an area reserved for the iconify, maximize, and close window buttons. If there are no window buttons on the left side of the window, the returned area is an empty `Dimension2D`.
    Parameters:
      `stage` - the `Stage`
    Returns:
      the `leftSystemInset` attached property

  - ### getLeftSystemInset

    public static Dimension2D getLeftSystemInset(Stage stage)
    Gets the value of the `leftSystemInset` attached property for the specified `Stage`.
    Parameters:
      `stage` - the `Stage`
    Returns:
      the size of the left system-reserved inset

  - ### rightSystemInsetProperty

    public static ReadOnlyObjectProperty<Dimension2D> rightSystemInsetProperty(Stage stage)
    Describes the size of the right system-reserved inset for the specified `Stage`, which is an area reserved for the iconify, maximize, and close window buttons. If there are no window buttons on the right side of the window, the returned area is an empty `Dimension2D`.
    Parameters:
      `stage` - the `Stage`
    Returns:
      the `rightSystemInset` attached property

  - ### getRightSystemInset

    public static Dimension2D getRightSystemInset(Stage stage)
    Gets the value of the `rightSystemInset` attached property for the specified `Stage`.
    Parameters:
      `stage` - the `Stage`
    Returns:
      the size of the right system-reserved inset

  - ### setAlignment

    public static void setAlignment(Node child, Pos value)
    Sets the alignment for the child when contained in a `HeaderBar`. If set, it will override the header bar's default alignment for the child's position. Setting the value to `null` will remove the constraint.
    Parameters:
      `child` - the child node
      `value` - the alignment position

  - ### getAlignment

    public static Pos getAlignment(Node child)
    Returns the child's alignment in the `HeaderBar`.
    Parameters:
      `child` - the child node
    Returns:
      the alignment position for the child, or `null` if no alignment was set

  - ### setMargin

    public static void setMargin(Node child, Insets value)
    Sets the margin for the child when contained in a `HeaderBar`. If set, the header bar will lay it out with the margin space around it. Setting the value to `null` will remove the constraint.
    Parameters:
      `child` - the child node
      `value` - the margin of space around the child

  - ### getMargin

    public static Insets getMargin(Node child)
    Returns the child's margin.
    Parameters:
      `child` - the child node
    Returns:
      the margin for the child, or `null` if no margin was set

  - ### leftProperty

    public final ObjectProperty<Node> leftProperty()
    The left area of the `HeaderBar`.
    Default value:
      `null`
    Returns:
      the `left` property
    See Also:
      - `getLeft()`
      - `setLeft(Node)`

  - ### getLeft

    public final Node getLeft()
    Gets the value of the `left` property.
    Property description:
      The left area of the `HeaderBar`.
    Default value:
      `null`
    Returns:
      the value of the `left` property
    See Also:
      - `setLeft(Node)`
      - `leftProperty()`

  - ### setLeft

    public final void setLeft(Node value)
    Sets the value of the `left` property.
    Property description:
      The left area of the `HeaderBar`.
    Default value:
      `null`
    Parameters:
      `value` - the value for the `left` property
    See Also:
      - `getLeft()`
      - `leftProperty()`

  - ### centerProperty

    public final ObjectProperty<Node> centerProperty()
    The center area of the `HeaderBar`.
    Default value:
      `null`
    Returns:
      the `center` property
    See Also:
      - `getCenter()`
      - `setCenter(Node)`

  - ### getCenter

    public final Node getCenter()
    Gets the value of the `center` property.
    Property description:
      The center area of the `HeaderBar`.
    Default value:
      `null`
    Returns:
      the value of the `center` property
    See Also:
      - `setCenter(Node)`
      - `centerProperty()`

  - ### setCenter

    public final void setCenter(Node value)
    Sets the value of the `center` property.
    Property description:
      The center area of the `HeaderBar`.
    Default value:
      `null`
    Parameters:
      `value` - the value for the `center` property
    See Also:
      - `getCenter()`
      - `centerProperty()`

  - ### rightProperty

    public final ObjectProperty<Node> rightProperty()
    The right area of the `HeaderBar`.
    Default value:
      `null`
    Returns:
      the `right` property
    See Also:
      - `getRight()`
      - `setRight(Node)`

  - ### getRight

    public final Node getRight()
    Gets the value of the `right` property.
    Property description:
      The right area of the `HeaderBar`.
    Default value:
      `null`
    Returns:
      the value of the `right` property
    See Also:
      - `setRight(Node)`
      - `rightProperty()`

  - ### setRight

    public final void setRight(Node value)
    Sets the value of the `right` property.
    Property description:
      The right area of the `HeaderBar`.
    Default value:
      `null`
    Parameters:
      `value` - the value for the `right` property
    See Also:
      - `getRight()`
      - `rightProperty()`

  - ### leftSystemPaddingProperty

    public final BooleanProperty leftSystemPaddingProperty()
    Specifies whether additional padding should be added to the left side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the left side of the `HeaderBar`.

    Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    Returns:
      the `leftSystemPadding` property
    See Also:
      - `isLeftSystemPadding()`
      - `setLeftSystemPadding(boolean)`

  - ### isLeftSystemPadding

    public final boolean isLeftSystemPadding()
    Gets the value of the `leftSystemPadding` property.
    Property description:
      Specifies whether additional padding should be added to the left side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the left side of the `HeaderBar`.

      Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    Returns:
      the value of the `leftSystemPadding` property
    See Also:
      - `setLeftSystemPadding(boolean)`
      - `leftSystemPaddingProperty()`

  - ### setLeftSystemPadding

    public final void setLeftSystemPadding(boolean value)
    Sets the value of the `leftSystemPadding` property.
    Property description:
      Specifies whether additional padding should be added to the left side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the left side of the `HeaderBar`.

      Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    Parameters:
      `value` - the value for the `leftSystemPadding` property
    See Also:
      - `isLeftSystemPadding()`
      - `leftSystemPaddingProperty()`

  - ### rightSystemPaddingProperty

    public final BooleanProperty rightSystemPaddingProperty()
    Specifies whether additional padding should be added to the right side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the right side of the `HeaderBar`.

    Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    Returns:
      the `rightSystemPadding` property
    See Also:
      - `isRightSystemPadding()`
      - `setRightSystemPadding(boolean)`

  - ### isRightSystemPadding

    public final boolean isRightSystemPadding()
    Gets the value of the `rightSystemPadding` property.
    Property description:
      Specifies whether additional padding should be added to the right side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the right side of the `HeaderBar`.

      Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    Returns:
      the value of the `rightSystemPadding` property
    See Also:
      - `setRightSystemPadding(boolean)`
      - `rightSystemPaddingProperty()`

  - ### setRightSystemPadding

    public final void setRightSystemPadding(boolean value)
    Sets the value of the `rightSystemPadding` property.
    Property description:
      Specifies whether additional padding should be added to the right side of the `HeaderBar`. The size of the additional padding corresponds to the size of the system-reserved area that contains the default header buttons (iconify, maximize, and close). If the system-reserved area contains no header buttons, no additional padding is added to the right side of the `HeaderBar`.

      Applications that use a single `HeaderBar` extending the entire width of the window should set this property to `true` to prevent the header buttons from overlapping the content of the `HeaderBar`.

    Default value:
      `true`
    Parameters:
      `value` - the value for the `rightSystemPadding` property
    See Also:
      - `isRightSystemPadding()`
      - `rightSystemPaddingProperty()`