- java.lang.Object
-
- javafx.scene.Node
-
- javafx.scene.Parent
-
- javafx.scene.layout.Region
-
- javafx.scene.control.Control
-
- org.controlsfx.control.SegmentedButton
-
- All Implemented Interfaces:
javafx.css.Styleable
,javafx.event.EventTarget
,javafx.scene.control.Skinnable
public class SegmentedButton extends javafx.scene.control.Control
The SegmentedButton is a simple control that forces together a group ofToggleButton
instances such that they appear as one collective button (with sub-buttons), rather than as individual buttons. This is better clarified with a picture:
Code Samples
There is very little API on this control, you essentially create
ToggleButton
instances as per usual (and don't bother putting them into aToggleGroup
, as this is done by the SegmentedButton itself), and then you place these buttons inside thebuttons list
. The long-hand way to code this is as follows:ToggleButton b1 = new ToggleButton("day"); ToggleButton b2 = new ToggleButton("week"); ToggleButton b3 = new ToggleButton("month"); ToggleButton b4 = new ToggleButton("year"); SegmentedButton segmentedButton = new SegmentedButton(); segmentedButton.getButtons().addAll(b1, b2, b3, b4);
A slightly shorter way of doing this is to pass the ToggleButton instances into the varargs constructor, as such:
SegmentedButton segmentedButton = new SegmentedButton(b1, b2, b3, b4);
Custom ToggleGroup
It is possible to configure the ToggleGroup, which is used internally. By setting the ToggleGroup to null, the control will allow multiple selections.
SegmentedButton segmentedButton = new SegmentedButton(); segmentedButton.setToggleGroup(null);
Alternative Styling
As is visible in the screenshot at the top of this class documentation, there are two different styles supported by the SegmentedButton control. Firstly, there is the default style based on the JavaFX Modena look. The alternative style is what is currently referred to as the 'dark' look. To enable this functionality, simply do the following:
SegmentedButton segmentedButton = new SegmentedButton(); segmentedButton.getStyleClass().add(SegmentedButton.STYLE_CLASS_DARK);
Resizable Range
By default, the maximum width and height of a SegmentedButton match its preferred width and height. Thus, the SegmentedButton only fills the area which is necessary to display the contained buttons. To change this behavior, the following code can be used:
SegmentedButton segmentedButton = new SegmentedButton(); segmentedButton.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
- See Also:
ToggleButton
,ToggleGroup
-
-
Field Summary
Fields Modifier and Type Field Description static String
STYLE_CLASS_DARK
An alternative styling for the segmented button, with a darker pressed color which stands out more than the default modena styling.
-
Constructor Summary
Constructors Constructor Description SegmentedButton()
Creates a default SegmentedButton instance with no buttons.SegmentedButton(javafx.collections.ObservableList<javafx.scene.control.ToggleButton> buttons)
Creates a default SegmentedButton instance with the provided buttons inserted into it.SegmentedButton(javafx.scene.control.ToggleButton... buttons)
Creates a default SegmentedButton instance with the provided buttons inserted into it.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected javafx.scene.control.Skin<?>
createDefaultSkin()
javafx.collections.ObservableList<javafx.scene.control.ToggleButton>
getButtons()
Returns the list of buttons that this SegmentedButton will draw together into one 'grouped button'.javafx.scene.control.ToggleGroup
getToggleGroup()
String
getUserAgentStylesheet()
protected String
getUserAgentStylesheet(Class<?> clazz, String fileName)
A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once.void
setToggleGroup(javafx.scene.control.ToggleGroup toggleGroup)
javafx.beans.property.ObjectProperty<javafx.scene.control.ToggleGroup>
toggleGroupProperty()
-
Methods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, executeAccessibleAction, getBaselineOffset, getClassCssMetaData, getContextMenu, getControlCssMetaData, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, queryAccessibleAttribute, setContextMenu, setSkin, setTooltip, skinProperty, tooltipProperty
-
Methods inherited from class javafx.scene.layout.Region
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, 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 inherited from class javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, 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, 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, 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
-
-
-
-
Field Detail
-
STYLE_CLASS_DARK
public static final String STYLE_CLASS_DARK
An alternative styling for the segmented button, with a darker pressed color which stands out more than the default modena styling. Refer to the class documentation for details on how to use (and screenshots), but in short, simply do the following to get the dark styling:SegmentedButton segmentedButton = new SegmentedButton(); segmentedButton.getStyleClass().add(SegmentedButton.STYLE_CLASS_DARK);
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SegmentedButton
public SegmentedButton()
Creates a default SegmentedButton instance with no buttons.
-
SegmentedButton
public SegmentedButton(javafx.scene.control.ToggleButton... buttons)
Creates a default SegmentedButton instance with the provided buttons inserted into it.- Parameters:
buttons
- A varargs array of buttons to add into the SegmentedButton instance.
-
SegmentedButton
public SegmentedButton(javafx.collections.ObservableList<javafx.scene.control.ToggleButton> buttons)
Creates a default SegmentedButton instance with the provided buttons inserted into it.- Parameters:
buttons
- A list of buttons to add into the SegmentedButton instance.
-
-
Method Detail
-
createDefaultSkin
protected javafx.scene.control.Skin<?> createDefaultSkin()
- Overrides:
createDefaultSkin
in classjavafx.scene.control.Control
-
getButtons
public final javafx.collections.ObservableList<javafx.scene.control.ToggleButton> getButtons()
Returns the list of buttons that this SegmentedButton will draw together into one 'grouped button'. It is possible to modify this list to add or removeToggleButton
instances, as shown in the javadoc documentation for this class.
-
toggleGroupProperty
public javafx.beans.property.ObjectProperty<javafx.scene.control.ToggleGroup> toggleGroupProperty()
- Returns:
- Property of the ToggleGroup used internally
-
getToggleGroup
public javafx.scene.control.ToggleGroup getToggleGroup()
- Returns:
- ToggleGroup used internally
-
setToggleGroup
public void setToggleGroup(javafx.scene.control.ToggleGroup toggleGroup)
- Parameters:
toggleGroup
- ToggleGroup to be used internally
-
getUserAgentStylesheet
public String getUserAgentStylesheet()
- Overrides:
getUserAgentStylesheet
in classjavafx.scene.layout.Region
-
getUserAgentStylesheet
protected final String getUserAgentStylesheet(Class<?> clazz, String fileName)
A helper method that ensures that the resource based lookup of the user agent stylesheet only happens once. Caches the external form of the resource.- Parameters:
clazz
- the class used for the resource lookupfileName
- the name of the user agent stylesheet- Returns:
- the external form of the user agent stylesheet (the path)
-
-