public class ButtonBar extends Control
HBox
, with the additional functionality
for operating system specific button placement. In other words, any Node may
be annotated (via the setButtonData(Node, ButtonData)
method, placed inside a ButtonBar (via the getButtons()
list), and will
then be positioned relative to all other nodes in the button list based on their
annotations, as well as the overarching
button order
specified for the ButtonBar.
Uniform button sizing
By default all buttons are uniformly sized in a ButtonBar, meaning that all
buttons take the width of the widest button. It is possible to opt-out of this
on a per-button basis, but calling the setButtonUniformSize(Node, boolean)
method with
a boolean value of false.
If a button is excluded from uniform sizing, it is both excluded from being resized away from its preferred size, and also excluded from the measuring process, so its size will not influence the maximum size calculated for all buttons in the ButtonBar.
Because a ButtonBar comes with built-in support for Windows, Mac OS and Linux, there are three screenshots shown below, with the same buttons laid out on each of the three operating systems.
Windows:
Mac OS:
Linux:
Instantiating and using the ButtonBar is simple, simply do the following:
// Create the ButtonBar instance
ButtonBar buttonBar = new ButtonBar();
// Create the buttons to go into the ButtonBar
Button yesButton = new Button("Yes");
ButtonBar.setButtonData(yesButton, ButtonData.YES);
Button noButton = new Button("No");
ButtonBar.setButtonData(noButton, ButtonData.NO);
// Add buttons to the ButtonBar
buttonBar.getButtons().addAll(yesButton, noButton);
The code sample above will position the Yes and No buttons relative to the users operating system. This means that on Windows and Linux the Yes button will come before the No button, whereas on Mac OS it'll be No and then Yes.
In most cases the OS-specific layout is the best choice, but in cases
where you want a custom layout, this is achieved be modifying the
button order property
. These are cryptic-looking
strings that are shorthand representations for the button order. The built-in
orders for Windows, Mac OS and Linux are:
Windows: | L_E+U+FBXI_YNOCAH_R |
Mac OS: | L_HE+U+FBIX_NCYOA_R |
Linux: | L_HE+UNYACBXIO_R |
You should refer to the ButtonBar.ButtonData
enumeration for a description of
what each of these characters mean. However, if your ButtonBar only consisted
of ButtonBar.ButtonData.YES
and ButtonBar.ButtonData.NO
buttons, you always
wanted the yes buttons before the no buttons, and you wanted the buttons to
be right-aligned
, you could do the following:
// Create the ButtonBar instance
ButtonBar buttonBar = new ButtonBar();
// Set the custom button order
buttonBar.setButtonOrder("+YN");
ButtonBar.ButtonData
Type | Property and Description |
---|---|
DoubleProperty |
buttonMinWidth
Specifies the minimum width of all buttons placed in this button bar.
|
StringProperty |
buttonOrder
The order for the typical buttons in a standard button bar.
|
contextMenu, skin, tooltip
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
needsLayout
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, visible
Modifier and Type | Class and Description |
---|---|
static class |
ButtonBar.ButtonData
An enumeration of all available button data annotations.
|
Modifier and Type | Field and Description |
---|---|
static String |
BUTTON_ORDER_LINUX
The default button ordering on Linux (specifically, GNOME).
|
static String |
BUTTON_ORDER_MAC_OS
The default button ordering on Mac OS.
|
static String |
BUTTON_ORDER_NONE
A button ordering string that specifies there is no button ordering.
|
static String |
BUTTON_ORDER_WINDOWS
The default button ordering on Windows.
|
USE_COMPUTED_SIZE, USE_PREF_SIZE
BASELINE_OFFSET_SAME_AS_HEIGHT
Constructor and Description |
---|
ButtonBar()
Creates a default ButtonBar instance using the default properties for
the users operating system.
|
ButtonBar(String buttonOrder)
Creates a ButtonBar with the given button order (refer to
buttonOrderProperty() for more information). |
Modifier and Type | Method and Description |
---|---|
DoubleProperty |
buttonMinWidthProperty()
Specifies the minimum width of all buttons placed in this button bar.
|
StringProperty |
buttonOrderProperty()
The order for the typical buttons in a standard button bar.
|
protected Skin<?> |
createDefaultSkin()
Create a new instance of the default skin for this control.
|
static ButtonBar.ButtonData |
getButtonData(Node button)
Returns the previously set ButtonData property on the given button.
|
double |
getButtonMinWidth()
Returns the minimum width of all buttons placed in this button bar.
|
String |
getButtonOrder()
Returns the current
button order . |
ObservableList<Node> |
getButtons()
Placing buttons inside this ObservableList will instruct the ButtonBar
to position them relative to each other based on their specified
ButtonBar.ButtonData . |
static boolean |
isButtonUniformSize(Node button)
Returns whether the given node is part of the uniform sizing calculations
or not.
|
static void |
setButtonData(Node button,
ButtonBar.ButtonData buttonData)
Sets the given ButtonData on the given button.
|
void |
setButtonMinWidth(double value)
Sets the minimum width of all buttons placed in this button bar.
|
void |
setButtonOrder(String buttonOrder)
Sets the
button order |
static void |
setButtonUniformSize(Node button,
boolean uniformSize)
By default all buttons are uniformly sized in a ButtonBar, meaning that all
buttons take the width of the widest button.
|
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, 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, snapSize, snapSpace, snapToPixelProperty, widthProperty
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
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, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, 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, 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, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, visibleProperty
public final StringProperty buttonOrderProperty
ButtonBar.ButtonData
enumeration value. Default button orders
for operating systems are also available: BUTTON_ORDER_WINDOWS
,
BUTTON_ORDER_MAC_OS
, and BUTTON_ORDER_LINUX
.getButtonOrder()
,
setButtonOrder(String)
public final DoubleProperty buttonMinWidthProperty
getButtonMinWidth()
,
setButtonMinWidth(double)
public static final String BUTTON_ORDER_WINDOWS
public static final String BUTTON_ORDER_MAC_OS
public static final String BUTTON_ORDER_LINUX
public static final String BUTTON_ORDER_NONE
getButtons()
list. The only aspect of layout that makes this
different than using an HBox is that the buttons are right-aligned.public ButtonBar()
public ButtonBar(String buttonOrder)
buttonOrderProperty()
for more information).buttonOrder
- The button order to use in this button bar instance.public static void setButtonData(Node button, ButtonBar.ButtonData buttonData)
ButtonBar
it will be placed in the
correct position relative to all other buttons in the bar.button
- The button to annotate with the given ButtonBar.ButtonData
value.buttonData
- The ButtonData to designate the button as.public static ButtonBar.ButtonData getButtonData(Node button)
button
- The button to return the previously set ButtonData for.public static void setButtonUniformSize(Node button, boolean uniformSize)
If a button is excluded from uniform sizing, it is both excluded from being resized away from its preferred size, and also excluded from the measuring process, so its size will not influence the maximum size calculated for all buttons in the ButtonBar.
button
- The button to include / exclude from uniform sizing.uniformSize
- Boolean true to force uniform sizing on the button,
false to exclude the button from uniform sizing.public static boolean isButtonUniformSize(Node button)
setButtonUniformSize(Node, boolean)
) will return true here.protected Skin<?> createDefaultSkin()
-fx-skin
or set explicitly in a sub-class with setSkin(...)
.createDefaultSkin
in class Control
public final ObservableList<Node> getButtons()
ButtonBar.ButtonData
. To set the ButtonData for a button, simply call
setButtonData(Node, ButtonData)
, passing in the
relevant ButtonData.public final StringProperty buttonOrderProperty()
ButtonBar.ButtonData
enumeration value. Default button orders
for operating systems are also available: BUTTON_ORDER_WINDOWS
,
BUTTON_ORDER_MAC_OS
, and BUTTON_ORDER_LINUX
.getButtonOrder()
,
setButtonOrder(String)
public final void setButtonOrder(String buttonOrder)
button order
buttonOrder
- The currently set button order, which by default will
be the OS-specific button order.public final String getButtonOrder()
button order
.button order
.public final DoubleProperty buttonMinWidthProperty()
getButtonMinWidth()
,
setButtonMinWidth(double)
public final void setButtonMinWidth(double value)
public final double getButtonMinWidth()
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.