- All Implemented Interfaces:
Validated,Styleable,EventTarget,Skinnable
For a combo box which more closely follows the guidelines of material design see MFXComboBox.
Extends ComboBox, redefines the style class to "mfx-legacy-combo-box" for usage in CSS and
includes a MFXValidator. Also, introduces a new PseudoClass ":invalid" to specify
the control's look when the validation fails.
If you check ComboBox documentation you will see a big warning about using nodes as content
because the scenegraph only allows for Nodes to be in one place at a time.
I found a workaround to this issue using Node.snapshot(SnapshotParameters, WritableImage).
Basically I make a "screenshot" of the graphic and then I use an ImageView to show it.
So let's say you have a combo box of labels with icons as graphic, when you select an item, it won't disappear anymore from the list because what you are seeing it's not the real graphic but a screenshot of it.
I recommend to use only nodes which are instances of Labeled since the toString() method is overridden
to return the control's text.
- See Also:
-
Property Summary
PropertiesTypePropertyDescriptionSpecifies if the lines switch between focus/un-focus should be animated.Specifies the color of the focused line when the validator state is invalid.Specifies the line's color when the control is focused.Specifies the lines' stroke cap.Specifies the lines' stroke width.Specifies the line's color when the control is not focused.Properties inherited from class javafx.scene.control.ComboBox
buttonCell, cellFactory, converter, editor, items, placeholder, selectionModel, visibleRowCountProperties inherited from class javafx.scene.control.ComboBoxBase
armed, editable, onAction, onHidden, onHiding, onShowing, onShown, promptText, showing, valueProperties inherited from class javafx.scene.control.Control
contextMenu, skin, tooltipProperties inherited from class javafx.scene.layout.Region
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, widthProperties inherited from class javafx.scene.Parent
needsLayoutProperties inherited from class javafx.scene.Node
accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, viewOrder, visible -
Field Summary
FieldsFields inherited from class javafx.scene.control.ComboBoxBase
ON_HIDDEN, ON_HIDING, ON_SHOWING, ON_SHOWNFields inherited from class javafx.scene.layout.Region
USE_COMPUTED_SIZE, USE_PREF_SIZEFields inherited from class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionSpecifies if the lines switch between focus/un-focus should be animated.protected Skin<?>List<CssMetaData<? extends Styleable,?>> static List<CssMetaData<? extends Styleable,?>> Gets the value of the property invalidLineColor.Gets the value of the property lineColor.Gets the value of the property lineStrokeCap.doubleGets the value of the property lineStrokeWidth.Gets the value of the property unfocusedLineColor.Specifies the color of the focused line when the validator state is invalid.booleanGets the value of the property animateLines.booleanSpecifies if validation is required for the control.Specifies the line's color when the control is focused.Specifies the lines' stroke cap.Specifies the lines' stroke width.voidsetAnimateLines(boolean animateLines) Sets the value of the property animateLines.voidsetInvalidLineColor(Paint invalidLineColor) Sets the value of the property invalidLineColor.voidsetLineColor(Paint lineColor) Sets the value of the property lineColor.voidsetLineStrokeCap(StrokeLineCap lineStrokeCap) Sets the value of the property lineStrokeCap.voidsetLineStrokeWidth(double lineStrokeWidth) Sets the value of the property lineStrokeWidth.voidsetUnfocusedLineColor(Paint unfocusedLineColor) Sets the value of the property unfocusedLineColor.voidsetValidated(boolean isValidated) Specifies the line's color when the control is not focused.protected voidupdateComboItem(ListCell<T> cell, T item, boolean empty) Defines the behavior of the button cell.Methods inherited from class javafx.scene.control.ComboBox
buttonCellProperty, cancelEdit, cellFactoryProperty, commitValue, converterProperty, editorProperty, getButtonCell, getCellFactory, getConverter, getEditor, getItems, getPlaceholder, getSelectionModel, getVisibleRowCount, itemsProperty, placeholderProperty, queryAccessibleAttribute, selectionModelProperty, setButtonCell, setCellFactory, setConverter, setItems, setPlaceholder, setSelectionModel, setVisibleRowCount, visibleRowCountPropertyMethods inherited from class javafx.scene.control.ComboBoxBase
arm, armedProperty, disarm, editableProperty, executeAccessibleAction, getOnAction, getOnHidden, getOnHiding, getOnShowing, getOnShown, getPromptText, getValue, hide, isArmed, isEditable, isShowing, onActionProperty, onHiddenProperty, onHidingProperty, onShowingProperty, onShownProperty, promptTextProperty, setEditable, setOnAction, setOnHidden, setOnHiding, setOnShowing, setOnShown, setPromptText, setValue, show, showingProperty, valuePropertyMethods inherited from class javafx.scene.control.Control
computeMaxHeight, computeMaxWidth, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, contextMenuProperty, getBaselineOffset, getClassCssMetaData, getContextMenu, getCssMetaData, getInitialFocusTraversable, getSkin, getTooltip, isResizable, layoutChildren, setContextMenu, setSkin, setTooltip, skinProperty, tooltipPropertyMethods 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, widthPropertyMethods inherited from class javafx.scene.Parent
getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, requestLayout, requestParentLayout, setNeedsLayout, updateBoundsMethods 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, visiblePropertyMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface javafx.css.Styleable
getStyleableNodeMethods inherited from interface io.github.palexdev.materialfx.validation.Validated
isValid, updateInvalid, validate
-
Property Details
-
invalidLineColor
Specifies the color of the focused line when the validator state is invalid. This workaround is needed because I discovered a rather surprising/shocking bug. If you set the line color in SceneBuilder (didn't test in Java code) and the validator state is invalid, the line won't change color as specified in the CSS file, damn you JavaFX :) -
lineColor
Specifies the line's color when the control is focused.- See Also:
-
unfocusedLineColor
Specifies the line's color when the control is not focused. -
lineStrokeWidth
Specifies the lines' stroke width. -
lineStrokeCap
Specifies the lines' stroke cap. -
animateLines
Specifies if the lines switch between focus/un-focus should be animated.- See Also:
-
-
Field Details
-
INVALID_PSEUDO_CLASS
-
-
Constructor Details
-
MFXLegacyComboBox
public MFXLegacyComboBox() -
MFXLegacyComboBox
-
-
Method Details
-
getValidator
- Specified by:
getValidatorin interfaceValidated- Returns:
- the
MFXValidatorinstance of this control
-
getInvalidLineColor
Gets the value of the property invalidLineColor.- Property description:
- Specifies the color of the focused line when the validator state is invalid. This workaround is needed because I discovered a rather surprising/shocking bug. If you set the line color in SceneBuilder (didn't test in Java code) and the validator state is invalid, the line won't change color as specified in the CSS file, damn you JavaFX :)
-
invalidLineColorProperty
Specifies the color of the focused line when the validator state is invalid. This workaround is needed because I discovered a rather surprising/shocking bug. If you set the line color in SceneBuilder (didn't test in Java code) and the validator state is invalid, the line won't change color as specified in the CSS file, damn you JavaFX :) -
setInvalidLineColor
Sets the value of the property invalidLineColor.- Property description:
- Specifies the color of the focused line when the validator state is invalid. This workaround is needed because I discovered a rather surprising/shocking bug. If you set the line color in SceneBuilder (didn't test in Java code) and the validator state is invalid, the line won't change color as specified in the CSS file, damn you JavaFX :)
-
updateComboItem
Defines the behavior of the button cell.If it's empty or the item is null, shows the prompt text.
If the item is instanceof
Labeledmakes a "screenshot" of the graphic if not null, and gets item's text. Otherwise callstoString()on the item. -
getLineColor
Gets the value of the property lineColor.- Property description:
- Specifies the line's color when the control is focused.
-
lineColorProperty
Specifies the line's color when the control is focused.- See Also:
-
setLineColor
Sets the value of the property lineColor.- Property description:
- Specifies the line's color when the control is focused.
-
getUnfocusedLineColor
Gets the value of the property unfocusedLineColor.- Property description:
- Specifies the line's color when the control is not focused.
-
unfocusedLineColorProperty
Specifies the line's color when the control is not focused. -
setUnfocusedLineColor
Sets the value of the property unfocusedLineColor.- Property description:
- Specifies the line's color when the control is not focused.
-
getLineStrokeWidth
public double getLineStrokeWidth()Gets the value of the property lineStrokeWidth.- Property description:
- Specifies the lines' stroke width.
-
lineStrokeWidthProperty
Specifies the lines' stroke width. -
setLineStrokeWidth
public void setLineStrokeWidth(double lineStrokeWidth) Sets the value of the property lineStrokeWidth.- Property description:
- Specifies the lines' stroke width.
-
getLineStrokeCap
Gets the value of the property lineStrokeCap.- Property description:
- Specifies the lines' stroke cap.
-
lineStrokeCapProperty
Specifies the lines' stroke cap. -
setLineStrokeCap
Sets the value of the property lineStrokeCap.- Property description:
- Specifies the lines' stroke cap.
-
isAnimateLines
public boolean isAnimateLines()Gets the value of the property animateLines.- Property description:
- Specifies if the lines switch between focus/un-focus should be animated.
-
animateLinesProperty
Specifies if the lines switch between focus/un-focus should be animated.- See Also:
-
setAnimateLines
public void setAnimateLines(boolean animateLines) Sets the value of the property animateLines.- Property description:
- Specifies if the lines switch between focus/un-focus should be animated.
-
isValidated
public boolean isValidated() -
isValidatedProperty
Specifies if validation is required for the control. -
setValidated
public void setValidated(boolean isValidated) -
getControlCssMetaDataList
-
createDefaultSkin
- Overrides:
createDefaultSkinin classComboBox<T>
-
getUserAgentStylesheet
- Overrides:
getUserAgentStylesheetin classRegion
-
getControlCssMetaData
- Overrides:
getControlCssMetaDatain classControl
-