Class SkinBase<C extends Control>
- javafx.scene.control.SkinBase<C>
All Implemented Interfaces:
Skin<C>
public abstract class SkinBase<C extends Control> extends Object implements Skin<C>
skin. A user interface control is abstracted behind the Skinnable interface.Since:
JavaFX 8.0
-
Constructor Summary
Constructors Modifier Constructor and Description protectedSkinBase(C control)Constructor for all SkinBase instances.
-
Method Summary
All MethodsStatic MethodsInstance MethodsConcrete Methods Modifier and Type Method and Description protected doublecomputeBaselineOffset(double topInset, double rightInset, double bottomInset, double leftInset)Calculates the baseline offset based on the first managed child.protected doublecomputeMaxHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset)Computes the maximum allowable height of the Skin, based on the provided width.protected doublecomputeMaxWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset)Computes the maximum allowable width of the Skin, based on the provided height.protected doublecomputeMinHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset)Computes the minimum allowable height of the Skin, based on the provided width.protected doublecomputeMinWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset)Computes the minimum allowable width of the Skin, based on the provided height.protected doublecomputePrefHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset)Calculates the preferred height of thisSkinBase.protected doublecomputePrefWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset)Calculates the preferred width of thisSkinBase.protected voidconsumeMouseEvents(boolean value)Determines whether all mouse events should be automatically consumed.voiddispose()Called by a Skinnable when the Skin is replaced on the Skinnable.protected voidexecuteAccessibleAction(AccessibleAction action, Object... parameters)ObservableList<Node>getChildren()Returns the children of the skin.static List<CssMetaData<? extends Styleable,?>>getClassCssMetaData()List<CssMetaData<? extends Styleable,?>>getCssMetaData()This method should delegate toNode.getClassCssMetaData()so that a Node's CssMetaData can be accessed without the need for reflection.NodegetNode()Gets the Node which represents this Skin.CgetSkinnable()Gets the Skinnable to which this Skin is assigned.protected voidlayoutChildren(double contentX, double contentY, double contentWidth, double contentHeight)Called during the layout pass of the scenegraph.protected voidlayoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, HPos halignment, VPos valignment)Utility method which lays out the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.protected voidlayoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, boolean fillWidth, boolean fillHeight, HPos halignment, VPos valignment)Utility method which lays out the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.protected voidlayoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, HPos halignment, VPos valignment)Utility method which lays out the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.protected voidpositionInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, HPos halignment, VPos valignment)Utility method which positions the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.protected voidpositionInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, HPos halignment, VPos valignment)Utility method which positions the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.voidpseudoClassStateChanged(PseudoClass pseudoClass, boolean active)protected ObjectqueryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)protected doublesnappedBottomInset()Utility method to get the bottom inset which includes padding and border inset.protected doublesnappedLeftInset()Utility method to get the left inset which includes padding and border inset.protected doublesnappedRightInset()Utility method to get the right inset which includes padding and border inset.protected doublesnappedTopInset()Utility method to get the top inset which includes padding and border inset.protected doublesnapPosition(double value)If this region's snapToPixel property is true, returns a value rounded to the nearest pixel, else returns the same value.protected doublesnapSize(double value)If this region's snapToPixel property is true, returns a value ceiled to the nearest pixel, else returns the same value.protected doublesnapSpace(double value)If this region's snapToPixel property is true, returns a value rounded to the nearest pixel, else returns the same value.
-
Constructor Detail
-
SkinBase
protected SkinBase(C control)
Constructor for all SkinBase instances.Parameters:
control- The control for which this Skin should attach to.
-
-
Method Detail
-
getSkinnable
public final C getSkinnable()
Gets the Skinnable to which this Skin is assigned. A Skin must be created for one and only one Skinnable. This value will only ever go from a non-null to null value when the Skin is removed from the Skinnable, and only as a consequence of a call toSkin.dispose().The caller who constructs a Skinnable must also construct a Skin and properly establish the relationship between the Control and its Skin.
Specified by:
getSkinnablein interfaceSkin<C extends Control>Returns:
A non-null Skinnable, or null value if disposed.
-
getNode
public final Node getNode()
Gets the Node which represents this Skin. This must never be null, except after a call toSkin.dispose(), and must never change except when changing to null.
-
dispose
public void dispose()
Called by a Skinnable when the Skin is replaced on the Skinnable. This method allows a Skin to implement any logic necessary to clean up itself after the Skin is no longer needed. It may be used to release native resources. The methodsSkin.getSkinnable()andSkin.getNode()should return null following a call to dispose. Calling dispose twice has no effect.
-
getChildren
public final ObservableList<Node> getChildren()
Returns the children of the skin.
-
layoutChildren
protected void layoutChildren(double contentX, double contentY, double contentWidth, double contentHeight)Called during the layout pass of the scenegraph.
-
consumeMouseEvents
protected final void consumeMouseEvents(boolean value)
Determines whether all mouse events should be automatically consumed.
-
computeMinWidth
protected double computeMinWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset)Computes the minimum allowable width of the Skin, based on the provided height.Parameters:
height- The height of the Skin, in case this value might dictate the minimum width.Returns:
A double representing the minimum width of this Skin.
-
computeMinHeight
protected double computeMinHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset)Computes the minimum allowable height of the Skin, based on the provided width.Parameters:
width- The width of the Skin, in case this value might dictate the minimum height.Returns:
A double representing the minimum height of this Skin.
-
computeMaxWidth
protected double computeMaxWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset)Computes the maximum allowable width of the Skin, based on the provided height.Parameters:
height- The height of the Skin, in case this value might dictate the maximum width.Returns:
A double representing the maximum width of this Skin.
-
computeMaxHeight
protected double computeMaxHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset)Computes the maximum allowable height of the Skin, based on the provided width.Parameters:
width- The width of the Skin, in case this value might dictate the maximum height.Returns:
A double representing the maximum height of this Skin.
-
computePrefWidth
protected double computePrefWidth(double height, double topInset, double rightInset, double bottomInset, double leftInset)Calculates the preferred width of thisSkinBase. The default implementation calculates this width as the width of the area occupied by its managed children when they are positioned at their current positions at their preferred widths.Parameters:
height- the height that should be used if preferred width depends on itReturns:
the calculated preferred width
-
computePrefHeight
protected double computePrefHeight(double width, double topInset, double rightInset, double bottomInset, double leftInset)Calculates the preferred height of thisSkinBase. The default implementation calculates this height as the height of the area occupied by its managed children when they are positioned at their current positions at their preferred heights.Parameters:
width- the width that should be used if preferred height depends on itReturns:
the calculated preferred height
-
computeBaselineOffset
protected double computeBaselineOffset(double topInset, double rightInset, double bottomInset, double leftInset)Calculates the baseline offset based on the first managed child. If there is no such child, returnsNode.getBaselineOffset().Parameters:
topInset- the pixel snapped top insetReturns:
baseline offset
-
snappedTopInset
protected double snappedTopInset()
Utility method to get the top inset which includes padding and border inset. Then snapped to whole pixels if getSkinnable().isSnapToPixel() is true.Returns:
Rounded up insets top
-
snappedBottomInset
protected double snappedBottomInset()
Utility method to get the bottom inset which includes padding and border inset. Then snapped to whole pixels if getSkinnable().isSnapToPixel() is true.Returns:
Rounded up insets bottom
-
snappedLeftInset
protected double snappedLeftInset()
Utility method to get the left inset which includes padding and border inset. Then snapped to whole pixels if getSkinnable().isSnapToPixel() is true.Returns:
Rounded up insets left
-
snappedRightInset
protected double snappedRightInset()
Utility method to get the right inset which includes padding and border inset. Then snapped to whole pixels if getSkinnable().isSnapToPixel() is true.Returns:
Rounded up insets right
-
snapSpace
protected double snapSpace(double value)
If this region's snapToPixel property is true, returns a value rounded to the nearest pixel, else returns the same value.Parameters:
value- the space value to be snappedReturns:
value rounded to nearest pixel
-
snapSize
protected double snapSize(double value)
If this region's snapToPixel property is true, returns a value ceiled to the nearest pixel, else returns the same value.Parameters:
value- the size value to be snappedReturns:
value ceiled to nearest pixel
-
snapPosition
protected double snapPosition(double value)
If this region's snapToPixel property is true, returns a value rounded to the nearest pixel, else returns the same value.Parameters:
value- the position value to be snappedReturns:
value rounded to nearest pixel
-
positionInArea
protected void positionInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, HPos halignment, VPos valignment)Utility method which positions the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.This function does not resize the node and uses the node's layout bounds width and height to determine how it should be positioned within the area.
If the vertical alignment is
VPos.BASELINEthen it will position the node so that its own baseline aligns with the passed inbaselineOffset, otherwise the baseline parameter is ignored.If
snapToPixelistruefor this skin, then the x/y position values will be rounded to their nearest pixel boundaries.Parameters:
child- the child being positioned within this skin
-
positionInArea
protected void positionInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, HPos halignment, VPos valignment)Utility method which positions the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.This function does not resize the node and uses the node's layout bounds width and height to determine how it should be positioned within the area.
If the vertical alignment is
VPos.BASELINEthen it will position the node so that its own baseline aligns with the passed inbaselineOffset, otherwise the baseline parameter is ignored.If
snapToPixelistruefor this skin, then the x/y position values will be rounded to their nearest pixel boundaries.If
marginis non-null, then that space will be allocated around the child within the layout area. margin may be null.Parameters:
child- the child being positioned within this skinSince:
JavaFX 8.0
-
layoutInArea
protected void layoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, HPos halignment, VPos valignment)Utility method which lays out the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.If the child is resizable, this method will resize it to fill the specified area unless the node's maximum size prevents it. If the node's maximum size preference is less than the area size, the maximum size will be used. If node's maximum is greater than the area size, then the node will be resized to fit within the area, unless its minimum size prevents it.
If the child has a non-null contentBias, then this method will use it when resizing the child. If the contentBias is horizontal, it will set its width first to the area's width (up to the child's max width limit) and then pass that value to compute the child's height. If child's contentBias is vertical, then it will set its height to the area height (up to child's max height limit) and pass that height to compute the child's width. If the child's contentBias is null, then it's width and height have no dependencies on each other.
If the child is not resizable (Shape, Group, etc) then it will only be positioned and not resized.
If the child's resulting size differs from the area's size (either because it was not resizable or it's sizing preferences prevented it), then this function will align the node relative to the area using horizontal and vertical alignment values. If valignment is
VPos.BASELINEthen the node's baseline will be aligned with the area baseline offset parameter, otherwise the baseline parameter is ignored.If
snapToPixelistruefor this skin, then the resulting x,y values will be rounded to their nearest pixel boundaries and the width/height values will be ceiled to the next pixel boundary.Parameters:
child- the child being positioned within this skin
-
layoutInArea
protected void layoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, HPos halignment, VPos valignment)Utility method which lays out the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.If the child is resizable, this method will resize it to fill the specified area unless the node's maximum size prevents it. If the node's maximum size preference is less than the area size, the maximum size will be used. If node's maximum is greater than the area size, then the node will be resized to fit within the area, unless its minimum size prevents it.
If the child has a non-null contentBias, then this method will use it when resizing the child. If the contentBias is horizontal, it will set its width first to the area's width (up to the child's max width limit) and then pass that value to compute the child's height. If child's contentBias is vertical, then it will set its height to the area height (up to child's max height limit) and pass that height to compute the child's width. If the child's contentBias is null, then it's width and height have no dependencies on each other.
If the child is not resizable (Shape, Group, etc) then it will only be positioned and not resized.
If the child's resulting size differs from the area's size (either because it was not resizable or it's sizing preferences prevented it), then this function will align the node relative to the area using horizontal and vertical alignment values. If valignment is
VPos.BASELINEthen the node's baseline will be aligned with the area baseline offset parameter, otherwise the baseline parameter is ignored.If
marginis non-null, then that space will be allocated around the child within the layout area. margin may be null.If
snapToPixelistruefor this skin, then the resulting x,y values will be rounded to their nearest pixel boundaries and the width/height values will be ceiled to the next pixel boundary.Parameters:
child- the child being positioned within this skin
-
layoutInArea
protected void layoutInArea(Node child, double areaX, double areaY, double areaWidth, double areaHeight, double areaBaselineOffset, Insets margin, boolean fillWidth, boolean fillHeight, HPos halignment, VPos valignment)Utility method which lays out the child within an area of this skin defined byareaX,areaY,areaWidthxareaHeight, with a baseline offset relative to that area.If the child is resizable, this method will use
fillWidthandfillHeightto determine whether to resize it to fill the area or keep the child at its preferred dimension. If fillWidth/fillHeight are true, then this method will only resize the child up to its max size limits. If the node's maximum size preference is less than the area size, the maximum size will be used. If node's maximum is greater than the area size, then the node will be resized to fit within the area, unless its minimum size prevents it.If the child has a non-null contentBias, then this method will use it when resizing the child. If the contentBias is horizontal, it will set its width first and then pass that value to compute the child's height. If child's contentBias is vertical, then it will set its height first and pass that value to compute the child's width. If the child's contentBias is null, then it's width and height have no dependencies on each other.
If the child is not resizable (Shape, Group, etc) then it will only be positioned and not resized.
If the child's resulting size differs from the area's size (either because it was not resizable or it's sizing preferences prevented it), then this function will align the node relative to the area using horizontal and vertical alignment values. If valignment is
VPos.BASELINEthen the node's baseline will be aligned with the area baseline offset parameter, otherwise the baseline parameter is ignored.If
marginis non-null, then that space will be allocated around the child within the layout area. margin may be null.If
snapToPixelistruefor this skin, then the resulting x,y values will be rounded to their nearest pixel boundaries and the width/height values will be ceiled to the next pixel boundary.Parameters:
child- the child being positioned within this skin
-
getClassCssMetaData
public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
Returns:
The CssMetaData associated with this class, which may include the CssMetaData of its super classes.
-
getCssMetaData
public List<CssMetaData<? extends Styleable,?>> getCssMetaData()
This method should delegate toNode.getClassCssMetaData()so that a Node's CssMetaData can be accessed without the need for reflection.Returns:
The CssMetaData associated with this node, which may include the CssMetaData of its super classes.
-
pseudoClassStateChanged
public final void pseudoClassStateChanged(PseudoClass pseudoClass, boolean active)
-
queryAccessibleAttribute
protected Object queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)
-
executeAccessibleAction
protected void executeAccessibleAction(AccessibleAction action, Object... parameters)
-
© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.