- All Implemented Interfaces:
Styleable
,EventTarget
public abstract class Parent extends Node
This class handles all hierarchical scene graph operations, including adding/removing child nodes, marking branches dirty for layout and rendering, picking, bounds calculations, and executing the layout pass on each pulse.
There are two direct concrete Parent subclasses
- Since:
- JavaFX 2.0
-
Property Summary
Properties Type Property Description ReadOnlyBooleanProperty
needsLayout
Indicates that this Node and its subnodes requires a layout pass on the next pulse.Properties 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
Fields inherited from class javafx.scene.Node
BASELINE_OFFSET_SAME_AS_HEIGHT
-
Constructor Summary
Constructors Modifier Constructor Description protected
Parent()
Constructs a newParent
. -
Method Summary
Modifier and Type Method Description protected double
computeMinHeight(double width)
Calculates the min height of thisParent
.protected double
computeMinWidth(double height)
Calculates the minimum width of thisParent
.protected double
computePrefHeight(double width)
Calculates the preferred height of thisParent
.protected double
computePrefWidth(double height)
Calculates the preferred width of thisParent
.double
getBaselineOffset()
Calculates the baseline offset based on the first managed child.protected ObservableList<Node>
getChildren()
Gets the list of children of thisParent
.ObservableList<Node>
getChildrenUnmodifiable()
Gets the list of children of thisParent
as a read-only list.protected <E extends Node>
List<E>getManagedChildren()
Gets the list of all managed children of thisParent
.ObservableList<String>
getStylesheets()
Gets an observable list of string URLs linking to the stylesheets to use with this Parent's contents.boolean
isNeedsLayout()
Gets the value of the property needsLayout.void
layout()
Executes a top-down layout pass on the scene graph under this parent.protected void
layoutChildren()
Invoked during the layout pass to layout the children in thisParent
.Node
lookup(String selector)
Finds thisNode
, or the first sub-node, based on the given CSS selector.double
minHeight(double width)
Returns the node's minimum height for use in layout calculations.double
minWidth(double height)
Returns the node's minimum width for use in layout calculations.ReadOnlyBooleanProperty
needsLayoutProperty()
Indicates that this Node and its subnodes requires a layout pass on the next pulse.double
prefHeight(double width)
Returns the node's preferred height for use in layout calculations.double
prefWidth(double height)
Returns the node's preferred width for use in layout calculations.Object
queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters)
This method is called by the assistive technology to request the value for an attribute.void
requestLayout()
Requests a layout pass to be performed before the next scene is rendered.protected void
requestParentLayout()
Requests a layout pass of the parent to be performed before the next scene is rendered.protected void
setNeedsLayout(boolean value)
Sets the value of the property needsLayout.protected void
updateBounds()
Updates the bounds of thisParent
and its children.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, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClassCssMetaData, getClip, getContentBias, getCssMetaData, 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, 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, isResizable, 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, maxHeight, maxWidth, 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, resize, 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
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface javafx.css.Styleable
getStyleableNode
-
Property Details
-
needsLayout
Indicates that this Node and its subnodes requires a layout pass on the next pulse.- See Also:
isNeedsLayout()
,setNeedsLayout(boolean)
-
-
Constructor Details
-
Parent
protected Parent()Constructs a newParent
.
-
-
Method Details
-
getChildren
Gets the list of children of thisParent
.See the class documentation for
Node
for scene graph structure restrictions on setting aParent
's children list. If these restrictions are violated by a change to the list of children, the change is ignored and the previous value of the children list is restored. AnIllegalArgumentException
is thrown in this case.If this
Parent
node is attached to aScene
attached to aWindow
that is showning (Window.isShowing()
), then its list of children must only be modified on the JavaFX Application Thread. AnIllegalStateException
is thrown if this restriction is violated.Note to subclasses: if you override this method, you must return from your implementation the result of calling this super method. The actual list instance returned from any getChildren() implementation must be the list owned and managed by this Parent. The only typical purpose for overriding this method is to promote the method to be public.
- Returns:
- the list of children of this
Parent
.
-
getChildrenUnmodifiable
Gets the list of children of thisParent
as a read-only list.- Returns:
- read-only access to this parent's children ObservableList
-
getManagedChildren
Gets the list of all managed children of thisParent
.- Type Parameters:
E
- the type of the children nodes- Returns:
- list of all managed children in this parent
-
lookup
Description copied from class:Node
Finds thisNode
, or the first sub-node, based on the given CSS selector. If this node is aParent
, then this function will traverse down into the branch until it finds a match. If more than one sub-node matches the specified selector, this function returns the first of them.For example, if a Node is given the id of "myId", then the lookup method can be used to find this node as follows:
scene.lookup("#myId");
. -
setNeedsLayout
protected final void setNeedsLayout(boolean value)Sets the value of the property needsLayout.- Property description:
- Indicates that this Node and its subnodes requires a layout pass on the next pulse.
-
isNeedsLayout
public final boolean isNeedsLayout()Gets the value of the property needsLayout.- Property description:
- Indicates that this Node and its subnodes requires a layout pass on the next pulse.
-
needsLayoutProperty
Indicates that this Node and its subnodes requires a layout pass on the next pulse.- See Also:
isNeedsLayout()
,setNeedsLayout(boolean)
-
requestLayout
public void requestLayout()Requests a layout pass to be performed before the next scene is rendered. This is batched up asynchronously to happen once per "pulse", or frame of animation.If this parent is either a layout root or unmanaged, then it will be added directly to the scene's dirty layout list, otherwise requestParentLayout will be invoked.
- Since:
- JavaFX 8.0
-
requestParentLayout
protected final void requestParentLayout()Requests a layout pass of the parent to be performed before the next scene is rendered. This is batched up asynchronously to happen once per "pulse", or frame of animation.This may be used when the current parent have changed it's min/max/preferred width/height, but doesn't know yet if the change will lead to it's actual size change. This will be determined when it's parent recomputes the layout with the new hints.
-
prefWidth
public double prefWidth(double height)Description copied from class:Node
Returns the node's preferred width for use in layout calculations. If the node is resizable, its parent should treat this value as the node's ideal width within its range. If the node is not resizable, just returns its layoutBounds width, which should be treated as the rigid width of the node.Layout code which calls this method should first check the content-bias of the node. If the node has a vertical content-bias, then callers should pass in a height value that the preferred width should be based on. If the node has either a horizontal or null content-bias, then the caller should pass in -1.
Node subclasses with a vertical content-bias should honor the height parameter whether -1 or a positive value. All other subclasses may ignore the height parameter (which will likely be -1).
- Overrides:
prefWidth
in classNode
- Parameters:
height
- the height that should be used if preferred width depends on it- Returns:
- the preferred width that the node should be resized to during layout The result will never be NaN, nor will it ever be negative.
- See Also:
Node.isResizable()
,Node.getContentBias()
,Node.autosize()
-
prefHeight
public double prefHeight(double width)Description copied from class:Node
Returns the node's preferred height for use in layout calculations. If the node is resizable, its parent should treat this value as the node's ideal height within its range. If the node is not resizable, just returns its layoutBounds height, which should be treated as the rigid height of the node.Layout code which calls this method should first check the content-bias of the node. If the node has a horizontal content-bias, then callers should pass in a width value that the preferred height should be based on. If the node has either a vertical or null content-bias, then the caller should pass in -1.
Node subclasses with a horizontal content-bias should honor the height parameter whether -1 or a positive value. All other subclasses may ignore the height parameter (which will likely be -1).
- Overrides:
prefHeight
in classNode
- Parameters:
width
- the width that should be used if preferred height depends on it- Returns:
- the preferred height that the node should be resized to during layout The result will never be NaN, nor will it ever be negative.
- See Also:
Node.getContentBias()
,Node.autosize()
-
minWidth
public double minWidth(double height)Description copied from class:Node
Returns the node's minimum width for use in layout calculations. If the node is resizable, its parent should not resize its width any smaller than this value. If the node is not resizable, returns its layoutBounds width.Layout code which calls this method should first check the content-bias of the node. If the node has a vertical content-bias, then callers should pass in a height value that the minimum width should be based on. If the node has either a horizontal or null content-bias, then the caller should pass in -1.
Node subclasses with a vertical content-bias should honor the height parameter whether -1 or a positive value. All other subclasses may ignore the height parameter (which will likely be -1).
If Node's
Node.maxWidth(double)
is lower than this number,minWidth
takes precedence. This means the Node should never be resized belowminWidth
.- Overrides:
minWidth
in classNode
- Parameters:
height
- the height that should be used if minimum width depends on it- Returns:
- the minimum width that the node should be resized to during layout. The result will never be NaN, nor will it ever be negative.
- See Also:
Node.isResizable()
,Node.getContentBias()
-
minHeight
public double minHeight(double width)Description copied from class:Node
Returns the node's minimum height for use in layout calculations. If the node is resizable, its parent should not resize its height any smaller than this value. If the node is not resizable, returns its layoutBounds height.Layout code which calls this method should first check the content-bias of the node. If the node has a horizontal content-bias, then callers should pass in a width value that the minimum height should be based on. If the node has either a vertical or null content-bias, then the caller should pass in -1.
Node subclasses with a horizontal content-bias should honor the width parameter whether -1 or a positive value. All other subclasses may ignore the width parameter (which will likely be -1).
If Node's
Node.maxHeight(double)
is lower than this number,minHeight
takes precedence. This means the Node should never be resized belowminHeight
.- Overrides:
minHeight
in classNode
- Parameters:
width
- the width that should be used if minimum height depends on it- Returns:
- the minimum height that the node should be resized to during layout The result will never be NaN, nor will it ever be negative.
- See Also:
Node.isResizable()
,Node.getContentBias()
-
computePrefWidth
protected double computePrefWidth(double height)Calculates the preferred width of thisParent
. 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 it- Returns:
- the calculated preferred width
-
computePrefHeight
protected double computePrefHeight(double width)Calculates the preferred height of thisParent
. 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 it- Returns:
- the calculated preferred height
-
computeMinWidth
protected double computeMinWidth(double height)Calculates the minimum width of thisParent
. The default implementation simply returns the pref width.- Parameters:
height
- the height that should be used if min width depends on it- Returns:
- the calculated min width
- Since:
- JavaFX 2.1
-
computeMinHeight
protected double computeMinHeight(double width)Calculates the min height of thisParent
. The default implementation simply returns the pref height;- Parameters:
width
- the width that should be used if min height depends on it- Returns:
- the calculated min height
- Since:
- JavaFX 2.1
-
getBaselineOffset
public double getBaselineOffset()Calculates the baseline offset based on the first managed child. If there is no such child, returnsNode.getBaselineOffset()
.- Overrides:
getBaselineOffset
in classNode
- Returns:
- baseline offset
-
layout
public final void layout()Executes a top-down layout pass on the scene graph under this parent. Calling this method while the Parent is doing layout is a no-op. -
layoutChildren
protected void layoutChildren()Invoked during the layout pass to layout the children in thisParent
. By default it will only set the size of managed, resizable content to their preferred sizes and does not do any node positioning.Subclasses should override this function to layout content as needed.
-
getStylesheets
Gets an observable list of string URLs linking to the stylesheets to use with this Parent's contents. SeeScene.getStylesheets()
for details.For additional information about using CSS with the scene graph, see the CSS Reference Guide.
- Returns:
- the list of stylesheets to use with this Parent
- Since:
- JavaFX 2.1
-
updateBounds
protected void updateBounds()Updates the bounds of thisParent
and its children. -
queryAccessibleAttribute
This method is called by the assistive technology to request the value for an attribute.This method is commonly overridden by subclasses to implement attributes that are required for a specific role.
If a particular attribute is not handled, the superclass implementation must be called.- Overrides:
queryAccessibleAttribute
in classNode
- Parameters:
attribute
- the requested attributeparameters
- optional list of parameters- Returns:
- the value for the requested attribute
- See Also:
AccessibleAttribute
-