APIdia Launch Partner
Top Description Fields Constructors Methods
javafx.scene.layout

public Class AnchorPane

extends Pane
Class Inheritance
Imports
java.util.List, javafx.geometry.Bounds, .Insets, .Orientation, javafx.scene.Node

AnchorPane allows the edges of child nodes to be anchored to an offset from the anchor pane's edges. If the anchor pane has a border and/or padding set, the offsets will be measured from the inside edge of those insets.

AnchorPane lays out each managed child regardless of the child's visible property value; unmanaged children are ignored for all layout calculations.

AnchorPanes may be styled with backgrounds and borders using CSS. See Region superclass for details.

Anchor Constraints

The application sets anchor constraints on each child to configure the anchors on one or more sides. If a child is anchored on opposite sides (and is resizable), the anchor pane will resize it to maintain both offsets, otherwise the anchor pane will resize it to its preferred size. If in the former case (anchored on opposite sides) and the child is not resizable, then only the top/left anchor will be honored. AnchorPane provides a static method for setting each anchor constraint.

AnchorPane Constraint Table
ConstraintTypeDescription
topAnchordoubledistance from the anchor pane's top insets to the child's top edge.
leftAnchordoubledistance from the anchor pane's left insets to the child's left edge.
bottomAnchordoubledistance from the anchor pane's bottom insets to the child's bottom edge.
rightAnchordoubledistance from the anchor pane's right insets to the child's right edge.

AnchorPane Example:

     AnchorPane anchorPane = new AnchorPane();
    // List should stretch as anchorPane is resized
    ListView list = new ListView();
    AnchorPane.setTopAnchor(list, 10.0);
    AnchorPane.setLeftAnchor(list, 10.0);
    AnchorPane.setRightAnchor(list, 65.0);
    // Button will float on right edge
    Button button = new Button("Add");
    AnchorPane.setTopAnchor(button, 10.0);
    AnchorPane.setRightAnchor(button, 10.0);
    anchorPane.getChildren().addAll(list, button);

Resizable Range

An anchor pane's parent will resize the anchor pane within the anchor pane's resizable range during layout. By default the anchor pane computes this range based on its content as outlined in the table below.

AnchorPane Resize Table
widthheight
minimum left/right insets plus width required to display children anchored at left/right with at least their min widths top/bottom insets plus height required to display children anchored at top/bottom with at least their min heights
preferred left/right insets plus width required to display children anchored at left/right with at least their pref widths top/bottom insets plus height required to display children anchored at top/bottom with at least their pref heights
maximum Double.MAX_VALUEDouble.MAX_VALUE

An anchor pane's unbounded maximum width and height are an indication to the parent that it may be resized beyond its preferred size to fill whatever space is assigned to it.

AnchorPane provides properties for setting the size range directly. These properties default to the sentinel value Region.USE_COMPUTED_SIZE, however the application may set them to other values as needed:

     anchorPane.setPrefSize(300, 300);
Applications may restore the computed values by setting these properties back to Region.USE_COMPUTED_SIZE.

AnchorPane does not clip its content by default, so it is possible that children's bounds may extend outside its own bounds if the anchor pane is resized smaller than its preferred size.

Since
JavaFX 2.0

Field Summary

Modifier and TypeField and Description
private static final String
private static final String
private static final String
private static final String

Constructor Summary

AccessConstructor and Description
public
AnchorPane()

Creates an AnchorPane layout.

public
AnchorPane(Node...
the initial set of children for this pane
children
)

Creates an AnchorPane layout with the given children.

Method Summary

Modifier and TypeMethod and Description
public static void
clearConstraints(Node
the child node
child
)

Removes all anchor pane constraints from the child node.

private double
computeChildHeight(Node child, Double topAnchor, Double bottomAnchor, double areaHeight, double width)

private double
computeChildWidth(Node child, Double leftAnchor, Double rightAnchor, double areaWidth, double height)

private double
computeHeight(final boolean minimum, final double width)

protected double
computeMinHeight(double width)

Overrides javafx.scene.layout.Region.computeMinHeight.

Computes the minimum height of this region.

protected double
computeMinWidth(double height)

Overrides javafx.scene.layout.Region.computeMinWidth.

Computes the minimum width of this region.

protected double
computePrefHeight(double width)

Overrides javafx.scene.layout.Region.computePrefHeight.

Computes the preferred height of this region for the given width; Region subclasses should override this method to return an appropriate value based on their content and layout strategy.

protected double
computePrefWidth(double height)

Overrides javafx.scene.layout.Region.computePrefWidth.

Computes the preferred width of this region for the given height.

private double
computeWidth(final boolean minimum, final double height)

public static Double

Returns:

the offset from the bottom of the anchor pane, or null if no bottom anchor was set
getBottomAnchor
(Node
the child node of an anchor pane
child
)

Returns the child's bottom anchor constraint, if set.

public static Double

Returns:

the offset from the left of the anchor pane, or null if no left anchor was set
getLeftAnchor
(Node
the child node of an anchor pane
child
)

Returns the child's left anchor constraint, if set.

public static Double

Returns:

the offset from the right of the anchor pane, or null if no right anchor was set
getRightAnchor
(Node
the child node of an anchor pane
child
)

Returns the child's right anchor constraint, if set.

private Double
private Double
private Double
private Double
public static Double

Returns:

the offset from the top of the anchor pane, or null if no top anchor was set
getTopAnchor
(Node
the child node of an anchor pane
child
)

Returns the child's top anchor constraint, if set.

protected void
layoutChildren()

Overrides javafx.scene.Parent.layoutChildren.

Invoked during the layout pass to layout the children in this Parent.

public static void
setBottomAnchor(Node
the child node of an anchor pane
child
,
Double
the offset from the bottom of the anchor pane
value
)

Sets the bottom anchor for the child when contained by an anchor pane.

public static void
setLeftAnchor(Node
the child node of an anchor pane
child
,
Double
the offset from the left of the anchor pane
value
)

Sets the left anchor for the child when contained by an anchor pane.

public static void
setRightAnchor(Node
the child node of an anchor pane
child
,
Double
the offset from the right of the anchor pane
value
)

Sets the right anchor for the child when contained by an anchor pane.

public static void
setTopAnchor(Node
the child node of an anchor pane
child
,
Double
the offset from the top of the anchor pane
value
)

Sets the top anchor for the child when contained by an anchor pane.

Inherited from javafx.scene.layout.Pane:
getChildrengetConstraintsetConstraint

Field Detail

BOTTOM_ANCHORback to summary
private static final String BOTTOM_ANCHOR
LEFT_ANCHORback to summary
private static final String LEFT_ANCHOR
RIGHT_ANCHORback to summary
private static final String RIGHT_ANCHOR
TOP_ANCHORback to summary
private static final String TOP_ANCHOR

Constructor Detail

AnchorPaneback to summary
public AnchorPane()

Creates an AnchorPane layout.

AnchorPaneback to summary
public AnchorPane(Node... children)

Creates an AnchorPane layout with the given children.

Parameters
children:Node[]

the initial set of children for this pane

Since
JavaFX 8.0

Method Detail

clearConstraintsback to summary
public static void clearConstraints(Node child)

Removes all anchor pane constraints from the child node.

Parameters
child:Node

the child node

computeChildHeightback to summary
private double computeChildHeight(Node child, Double topAnchor, Double bottomAnchor, double areaHeight, double width)
computeChildWidthback to summary
private double computeChildWidth(Node child, Double leftAnchor, Double rightAnchor, double areaWidth, double height)
computeHeightback to summary
private double computeHeight(final boolean minimum, final double width)
computeMinHeightback to summary
protected double computeMinHeight(double width)

Overrides javafx.scene.layout.Region.computeMinHeight.

Doc from javafx.scene.layout.Region.computeMinHeight.

Computes the minimum height of this region. Returns the sum of the top and bottom insets by default. Region subclasses should override this method to return an appropriate value based on their content and layout strategy. If the subclass doesn't have a HORIZONTAL content bias, then the width parameter can be ignored.

Annotations
@Override
computeMinWidthback to summary
protected double computeMinWidth(double height)

Overrides javafx.scene.layout.Region.computeMinWidth.

Doc from javafx.scene.layout.Region.computeMinWidth.

Computes the minimum width of this region. Returns the sum of the left and right insets by default. region subclasses should override this method to return an appropriate value based on their content and layout strategy. If the subclass doesn't have a VERTICAL content bias, then the height parameter can be ignored.

Annotations
@Override
computePrefHeightback to summary
protected double computePrefHeight(double width)

Overrides javafx.scene.layout.Region.computePrefHeight.

Doc from javafx.scene.layout.Region.computePrefHeight.

Computes the preferred height of this region for the given width; Region subclasses should override this method to return an appropriate value based on their content and layout strategy. If the subclass doesn't have a HORIZONTAL content bias, then the width parameter can be ignored.

Annotations
@Override
computePrefWidthback to summary
protected double computePrefWidth(double height)

Overrides javafx.scene.layout.Region.computePrefWidth.

Doc from javafx.scene.layout.Region.computePrefWidth.

Computes the preferred width of this region for the given height. Region subclasses should override this method to return an appropriate value based on their content and layout strategy. If the subclass doesn't have a VERTICAL content bias, then the height parameter can be ignored.

Annotations
@Override
computeWidthback to summary
private double computeWidth(final boolean minimum, final double height)
getBottomAnchorback to summary
public static Double getBottomAnchor(Node child)

Returns the child's bottom anchor constraint, if set.

Parameters
child:Node

the child node of an anchor pane

Returns:Double

the offset from the bottom of the anchor pane, or null if no bottom anchor was set

getLeftAnchorback to summary
public static Double getLeftAnchor(Node child)

Returns the child's left anchor constraint, if set.

Parameters
child:Node

the child node of an anchor pane

Returns:Double

the offset from the left of the anchor pane, or null if no left anchor was set

getRightAnchorback to summary
public static Double getRightAnchor(Node child)

Returns the child's right anchor constraint, if set.

Parameters
child:Node

the child node of an anchor pane

Returns:Double

the offset from the right of the anchor pane, or null if no right anchor was set

getSnappedBottomAnchorback to summary
private Double getSnappedBottomAnchor(Node child)
getSnappedLeftAnchorback to summary
private Double getSnappedLeftAnchor(Node child)
getSnappedRightAnchorback to summary
private Double getSnappedRightAnchor(Node child)
getSnappedTopAnchorback to summary
private Double getSnappedTopAnchor(Node child)
getTopAnchorback to summary
public static Double getTopAnchor(Node child)

Returns the child's top anchor constraint, if set.

Parameters
child:Node

the child node of an anchor pane

Returns:Double

the offset from the top of the anchor pane, or null if no top anchor was set

layoutChildrenback to summary
protected void layoutChildren()

Overrides javafx.scene.Parent.layoutChildren.

Doc from javafx.scene.Parent.layoutChildren.

Invoked during the layout pass to layout the children in this Parent. 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.

Annotations
@Override
setBottomAnchorback to summary
public static void setBottomAnchor(Node child, Double value)

Sets the bottom anchor for the child when contained by an anchor pane. If set, the anchor pane will maintain the child's size and position so that its bottom is always offset by that amount from the anchor pane's bottom content edge. Setting the value to null will remove the constraint.

Parameters
child:Node

the child node of an anchor pane

value:Double

the offset from the bottom of the anchor pane

setLeftAnchorback to summary
public static void setLeftAnchor(Node child, Double value)

Sets the left anchor for the child when contained by an anchor pane. If set, the anchor pane will maintain the child's size and position so that its left is always offset by that amount from the anchor pane's left content edge. Setting the value to null will remove the constraint.

Parameters
child:Node

the child node of an anchor pane

value:Double

the offset from the left of the anchor pane

setRightAnchorback to summary
public static void setRightAnchor(Node child, Double value)

Sets the right anchor for the child when contained by an anchor pane. If set, the anchor pane will maintain the child's size and position so that its right is always offset by that amount from the anchor pane's right content edge. Setting the value to null will remove the constraint.

Parameters
child:Node

the child node of an anchor pane

value:Double

the offset from the right of the anchor pane

setTopAnchorback to summary
public static void setTopAnchor(Node child, Double value)

Sets the top anchor for the child when contained by an anchor pane. If set, the anchor pane will maintain the child's size and position so that its top is always offset by that amount from the anchor pane's top content edge. Setting the value to null will remove the constraint.

Parameters
child:Node

the child node of an anchor pane

value:Double

the offset from the top of the anchor pane