Class PopOver

java.lang.Object
javafx.stage.Window
javafx.stage.PopupWindow
javafx.scene.control.PopupControl
com.dlsc.gemsfx.PopOver
All Implemented Interfaces:
javafx.css.Styleable, javafx.event.EventTarget, javafx.scene.control.Skinnable
Direct Known Subclasses:
PopOver.CalendarPopOver

public class PopOver extends javafx.scene.control.PopupControl
A control that is intended to provide detailed information about an owning node in a popup window. The popup window has a lightweight appearance (no default window decorations) and an arrow pointing at the owner. Due to the nature of popup windows, the popover will move around with the parent window when the user drags it.

The Popover can be detached from the owning node by dragging it away from the owner.

Example

var textFlow = new TextFlow(new Text("Some content"));
textFlow.setPrefWidth(300);

var popover = new Popover(textFlow);
var ownerLink = new Hyperlink("Show popover");
ownerLink.setOnAction(e -> popover.show(ownerLink));

CSS Styleable Properties:

CSS Properties
PropertyTypeDescription
-fx-arrow-indentDoubleDistance between the arrow and popup corners.
-fx-arrow-sizeDoubleThe size of the arrow.
-fx-corner-radiusDoubleThe corner radius of the popover.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    Locations where the arrow of the popover can be placed.
    static class 
    A specialized popover to let the user select a date or a date range.

    Nested classes/interfaces inherited from class javafx.scene.control.PopupControl

    javafx.scene.control.PopupControl.CSSBridge

    Nested classes/interfaces inherited from class javafx.stage.PopupWindow

    javafx.stage.PopupWindow.AnchorLocation
  • Property Summary

    Properties
    Type
    Property
    Description
    final javafx.beans.property.BooleanProperty
    Stores the "animated" flag.
    final javafx.beans.property.DoubleProperty
    Controls the distance between the arrow and the corners of the popover.
    final javafx.beans.property.ObjectProperty<PopOver.ArrowLocation>
    Stores the preferred arrow location.
    final javafx.beans.property.DoubleProperty
    Controls the size of the arrow.
    final javafx.beans.property.ObjectProperty<javafx.scene.Node>
    Returns the content shown by the popover.
    final javafx.beans.property.DoubleProperty
    Returns the corner radius property for the popover.
    final javafx.beans.property.BooleanProperty
    Determines if the popover is detachable at all.
    final javafx.beans.property.BooleanProperty
    Determines whether the popover is detached from the owning node or not.
    final javafx.beans.property.ObjectProperty<javafx.util.Duration>
    Stores the fade-in duration.
    final javafx.beans.property.ObjectProperty<javafx.util.Duration>
    Stores the fade-out duration.

    Properties inherited from class javafx.scene.control.PopupControl

    id, maxHeight, maxWidth, minHeight, minWidth, prefHeight, prefWidth, skin, style

    Properties inherited from class javafx.stage.PopupWindow

    anchorLocation, anchorX, anchorY, autoFix, autoHide, consumeAutoHidingEvents, hideOnEscape, onAutoHide, ownerNode, ownerWindow

    Properties inherited from class javafx.stage.Window

    eventDispatcher, focused, forceIntegerRenderScale, height, onCloseRequest, onHidden, onHiding, onShowing, onShown, opacity, outputScaleX, outputScaleY, renderScaleX, renderScaleY, scene, showing, width, x, y
  • Field Summary

    Fields inherited from class javafx.scene.control.PopupControl

    bridge, USE_COMPUTED_SIZE, USE_PREF_SIZE
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a popover with a label as the content node.
    PopOver(javafx.scene.Node content)
    Creates a popover with the given node as the content node.
  • Method Summary

    Modifier and Type
    Method
    Description
    final javafx.beans.property.BooleanProperty
    Stores the "animated" flag.
    final javafx.beans.property.DoubleProperty
    Controls the distance between the arrow and the corners of the popover.
    final javafx.beans.property.ObjectProperty<PopOver.ArrowLocation>
    Stores the preferred arrow location.
    final javafx.beans.property.DoubleProperty
    Controls the size of the arrow.
    final javafx.beans.property.ObjectProperty<javafx.scene.Node>
    Returns the content shown by the popover.
    final javafx.beans.property.DoubleProperty
    Returns the corner radius property for the popover.
    protected javafx.scene.control.Skin<?>
    Creates the default skin for this control.
    final void
    Detaches the popover from the owning node.
    final javafx.beans.property.BooleanProperty
    Determines if the popover is detachable at all.
    final javafx.beans.property.BooleanProperty
    Determines whether the popover is detached from the owning node or not.
    final javafx.beans.property.ObjectProperty<javafx.util.Duration>
    Stores the fade-in duration.
    final javafx.beans.property.ObjectProperty<javafx.util.Duration>
    Stores the fade-out duration.
    final double
    Gets the value of the arrowIndent property.
    Gets the value of the arrowLocation property.
    final double
    Gets the value of the arrowSize property.
    final javafx.scene.Node
    Gets the value of the contentNode property.
    final double
    Gets the value of the cornerRadius property.
    final javafx.util.Duration
    Gets the value of the fadeInDuration property.
    final javafx.util.Duration
    Gets the value of the fadeOutDuration property.
    final javafx.scene.layout.StackPane
    The root pane stores the content node of the popover.
    final void
    Hides the popover by quickly changing its opacity to 0.
    final void
    hide(javafx.util.Duration fadeOutDuration)
    Hides the popover by quickly changing its opacity to 0.
    final boolean
    Gets the value of the animated property.
    final boolean
    Gets the value of the detachable property.
    final boolean
    Gets the value of the detached property.
    final void
    relocate(double arrowTipX, double arrowTipY)
    Repositions the popover so that the arrow tip is at the given screen coordinate, without hiding and re-showing it.
    final void
    setAnimated(boolean animated)
    Sets the value of the animated property.
    final void
    setArrowIndent(double size)
    Sets the value of the arrowIndent property.
    final void
    Sets the value of the arrowLocation property.
    final void
    setArrowSize(double size)
    Sets the value of the arrowSize property.
    final void
    setContentNode(javafx.scene.Node content)
    Sets the value of the contentNode property.
    final void
    setCornerRadius(double radius)
    Sets the value of the cornerRadius property.
    final void
    setDetachable(boolean detachable)
    Sets the value of the detachable property.
    final void
    setDetached(boolean detached)
    Sets the value of the detached property.
    final void
    setFadeInDuration(javafx.util.Duration duration)
    Sets the value of the fadeInDuration property.
    final void
    setFadeOutDuration(javafx.util.Duration duration)
    Sets the value of the fadeOutDuration property.
    final void
    show(javafx.scene.Node owner)
    Shows the popover in a position relative to the edges of the given owner node.
    final void
    show(javafx.scene.Node owner, double offset)
    Shows the popover in a position relative to the edges of the given owner node.
    final void
    show(javafx.scene.Node owner, double x, double y)
    Makes the popover visible at the give location and associates it with the given owner node.
    final void
    show(javafx.scene.Node owner, double x, double y, javafx.util.Duration fadeInDuration)
    Makes the popover visible at the give location and associates it with the given owner node.

    Methods inherited from class javafx.scene.control.PopupControl

    getClassCssMetaData, getCssMetaData, getId, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getPrefHeight, getPrefWidth, getPseudoClassStates, getSkin, getStyle, getStyleableNode, getStyleableParent, getStyleClass, getTypeSelector, idProperty, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, pseudoClassStateChanged, setId, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setPrefHeight, setPrefSize, setPrefWidth, setSkin, setStyle, skinProperty, styleProperty

    Methods inherited from class javafx.stage.PopupWindow

    anchorLocationProperty, anchorXProperty, anchorYProperty, autoFixProperty, autoHideProperty, consumeAutoHidingEventsProperty, getAnchorLocation, getAnchorX, getAnchorY, getConsumeAutoHidingEvents, getOnAutoHide, getOwnerNode, getOwnerWindow, hideOnEscapeProperty, isAutoFix, isAutoHide, isHideOnEscape, onAutoHideProperty, ownerNodeProperty, ownerWindowProperty, setAnchorLocation, setAnchorX, setAnchorY, setAutoFix, setAutoHide, setConsumeAutoHidingEvents, setHideOnEscape, setOnAutoHide, setScene, show, show

    Methods inherited from class javafx.stage.Window

    addEventFilter, addEventHandler, buildEventDispatchChain, centerOnScreen, eventDispatcherProperty, fireEvent, focusedProperty, forceIntegerRenderScaleProperty, getEventDispatcher, getHeight, getOnCloseRequest, getOnHidden, getOnHiding, getOnShowing, getOnShown, getOpacity, getOutputScaleX, getOutputScaleY, getProperties, getRenderScaleX, getRenderScaleY, getScene, getUserData, getWidth, getWindows, getX, getY, hasProperties, heightProperty, isFocused, isForceIntegerRenderScale, isShowing, onCloseRequestProperty, onHiddenProperty, onHidingProperty, onShowingProperty, onShownProperty, opacityProperty, outputScaleXProperty, outputScaleYProperty, removeEventFilter, removeEventHandler, renderScaleXProperty, renderScaleYProperty, requestFocus, sceneProperty, setEventDispatcher, setEventHandler, setForceIntegerRenderScale, setHeight, setOnCloseRequest, setOnHidden, setOnHiding, setOnShowing, setOnShown, setOpacity, setRenderScaleX, setRenderScaleY, setUserData, setWidth, setX, setY, show, showingProperty, sizeToScene, widthProperty, xProperty, yProperty

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Property Details

  • Constructor Details

    • PopOver

      public PopOver()
      Creates a popover with a label as the content node.
    • PopOver

      public PopOver(javafx.scene.Node content)
      Creates a popover with the given node as the content node.
      Parameters:
      content - The content shown by the popover
  • Method Details

    • createDefaultSkin

      protected javafx.scene.control.Skin<?> createDefaultSkin()
      Creates the default skin for this control.
      Overrides:
      createDefaultSkin in class javafx.scene.control.PopupControl
      Returns:
      the default skin
    • getRoot

      public final javafx.scene.layout.StackPane getRoot()
      The root pane stores the content node of the popover. It is accessible via this method to support proper styling.

      Example:

      Popover popOver = new Popover();
      popOver.getRoot().getStylesheets().add(...);
      
      Returns:
      the root pane
    • contentNodeProperty

      public final javafx.beans.property.ObjectProperty<javafx.scene.Node> contentNodeProperty()
      Returns the content shown by the popover.
      Returns:
      the content node property
      See Also:
    • getContentNode

      public final javafx.scene.Node getContentNode()
      Gets the value of the contentNode property.
      Property description:
      Returns the content shown by the popover.
      Returns:
      the value of the contentNode property
      See Also:
    • setContentNode

      public final void setContentNode(javafx.scene.Node content)
      Sets the value of the contentNode property.
      Property description:
      Returns the content shown by the popover.
      Parameters:
      content - the value for the contentNode property
      See Also:
    • show

      public final void show(javafx.scene.Node owner)
      Shows the popover in a position relative to the edges of the given owner node. The position is dependent on the arrow location. If the arrow is pointing to the right, then the popover will be placed to the left of the given owner. If the arrow points up, then the popover will be placed below the given owner node. The arrow will slightly overlap with the owner node.
      Parameters:
      owner - the owner of the popover
    • show

      public final void show(javafx.scene.Node owner, double offset)
      Shows the popover in a position relative to the edges of the given owner node. The position is dependent on the arrow location. If the arrow is pointing to the right, then the popover will be placed to the left of the given owner. If the arrow points up, then the popover will be placed below the given owner node.
      Parameters:
      owner - the owner of the popover
      offset - if negative specifies the distance to the owner node, or when positive specifies the number of pixels that the arrow will overlap with the owner node (positive values are recommended)
    • show

      public final void show(javafx.scene.Node owner, double x, double y)
      Makes the popover visible at the give location and associates it with the given owner node. The x and y coordinate will be the target location of the arrow of the popover and not the location of the window.
      Overrides:
      show in class javafx.stage.PopupWindow
      Parameters:
      owner - the owning node
      x - the x coordinate for the popover arrow tip
      y - the y coordinate for the popover arrow tip
    • show

      public final void show(javafx.scene.Node owner, double x, double y, javafx.util.Duration fadeInDuration)
      Makes the popover visible at the give location and associates it with the given owner node. The x and y coordinate will be the target location of the arrow of the popover and not the location of the window.
      Parameters:
      owner - the owning node
      x - the x coordinate for the popover arrow tip
      y - the y coordinate for the popover arrow tip
      fadeInDuration - the time it takes for the popover to be fully visible. This duration takes precedence over the fade-in property without setting.
    • relocate

      public final void relocate(double arrowTipX, double arrowTipY)
      Repositions the popover so that the arrow tip is at the given screen coordinate, without hiding and re-showing it. Use this instead of calling show(Node) again when the popover is already visible, to avoid flickering during event-to-event transitions.
      Parameters:
      arrowTipX - the screen X coordinate for the arrow tip
      arrowTipY - the screen Y coordinate for the arrow tip
    • hide

      public final void hide()
      Hides the popover by quickly changing its opacity to 0.
      Overrides:
      hide in class javafx.stage.PopupWindow
      See Also:
    • hide

      public final void hide(javafx.util.Duration fadeOutDuration)
      Hides the popover by quickly changing its opacity to 0.
      Parameters:
      fadeOutDuration - the duration of the fade transition that is being used to change the opacity of the popover
      Since:
      1.0
    • detach

      public final void detach()
      Detaches the popover from the owning node. The popover will no longer display an arrow pointing at the owner node.
    • detachableProperty

      public final javafx.beans.property.BooleanProperty detachableProperty()
      Determines if the popover is detachable at all.
      Returns:
      the detachable property
      See Also:
    • setDetachable

      public final void setDetachable(boolean detachable)
      Sets the value of the detachable property.
      Property description:
      Determines if the popover is detachable at all.
      Parameters:
      detachable - the value for the detachable property
      See Also:
    • isDetachable

      public final boolean isDetachable()
      Gets the value of the detachable property.
      Property description:
      Determines if the popover is detachable at all.
      Returns:
      the value of the detachable property
      See Also:
    • detachedProperty

      public final javafx.beans.property.BooleanProperty detachedProperty()
      Determines whether the popover is detached from the owning node or not. A detached popover no longer shows an arrow pointing at the owner and features its own title bar.
      Returns:
      the detached property
      See Also:
    • setDetached

      public final void setDetached(boolean detached)
      Sets the value of the detached property.
      Property description:
      Determines whether the popover is detached from the owning node or not. A detached popover no longer shows an arrow pointing at the owner and features its own title bar.
      Parameters:
      detached - the value for the detached property
      See Also:
    • isDetached

      public final boolean isDetached()
      Gets the value of the detached property.
      Property description:
      Determines whether the popover is detached from the owning node or not. A detached popover no longer shows an arrow pointing at the owner and features its own title bar.
      Returns:
      the value of the detached property
      See Also:
    • arrowSizeProperty

      public final javafx.beans.property.DoubleProperty arrowSizeProperty()
      Controls the size of the arrow. The default value is 10.
      Returns:
      the arrow size property
      See Also:
    • getArrowSize

      public final double getArrowSize()
      Gets the value of the arrowSize property.
      Property description:
      Controls the size of the arrow. The default value is 10.
      Returns:
      the value of the arrowSize property
      See Also:
    • setArrowSize

      public final void setArrowSize(double size)
      Sets the value of the arrowSize property.
      Property description:
      Controls the size of the arrow. The default value is 10.
      Parameters:
      size - the value for the arrowSize property
      See Also:
    • arrowIndentProperty

      public final javafx.beans.property.DoubleProperty arrowIndentProperty()
      Controls the distance between the arrow and the corners of the popover. The default value is 12.
      Returns:
      the arrow indent property
      See Also:
    • getArrowIndent

      public final double getArrowIndent()
      Gets the value of the arrowIndent property.
      Property description:
      Controls the distance between the arrow and the corners of the popover. The default value is 12.
      Returns:
      the value of the arrowIndent property
      See Also:
    • setArrowIndent

      public final void setArrowIndent(double size)
      Sets the value of the arrowIndent property.
      Property description:
      Controls the distance between the arrow and the corners of the popover. The default value is 12.
      Parameters:
      size - the value for the arrowIndent property
      See Also:
    • cornerRadiusProperty

      public final javafx.beans.property.DoubleProperty cornerRadiusProperty()
      Returns the corner radius property for the popover.
      Returns:
      the corner radius property (default is 6)
      See Also:
    • getCornerRadius

      public final double getCornerRadius()
      Gets the value of the cornerRadius property.
      Property description:
      Returns the corner radius property for the popover.
      Returns:
      the value of the cornerRadius property
      See Also:
    • setCornerRadius

      public final void setCornerRadius(double radius)
      Sets the value of the cornerRadius property.
      Property description:
      Returns the corner radius property for the popover.
      Parameters:
      radius - the value for the cornerRadius property
      See Also:
    • arrowLocationProperty

      public final javafx.beans.property.ObjectProperty<PopOver.ArrowLocation> arrowLocationProperty()
      Stores the preferred arrow location. This might not be the actual location of the arrow if auto fix is enabled.
      Returns:
      the arrow location property
      See Also:
    • setArrowLocation

      public final void setArrowLocation(PopOver.ArrowLocation location)
      Sets the value of the arrowLocation property.
      Property description:
      Stores the preferred arrow location. This might not be the actual location of the arrow if auto fix is enabled.
      Parameters:
      location - the value for the arrowLocation property
      See Also:
    • getArrowLocation

      public final PopOver.ArrowLocation getArrowLocation()
      Gets the value of the arrowLocation property.
      Property description:
      Stores the preferred arrow location. This might not be the actual location of the arrow if auto fix is enabled.
      Returns:
      the value of the arrowLocation property
      See Also:
    • fadeInDurationProperty

      public final javafx.beans.property.ObjectProperty<javafx.util.Duration> fadeInDurationProperty()
      Stores the fade-in duration. This should be set before calling PopOver.show(…).
      Returns:
      the fade-in duration property
      See Also:
    • fadeOutDurationProperty

      public final javafx.beans.property.ObjectProperty<javafx.util.Duration> fadeOutDurationProperty()
      Stores the fade-out duration.
      Returns:
      the fade-out duration property
      See Also:
    • getFadeInDuration

      public final javafx.util.Duration getFadeInDuration()
      Gets the value of the fadeInDuration property.
      Property description:
      Stores the fade-in duration. This should be set before calling PopOver.show(…).
      Returns:
      the value of the fadeInDuration property
      See Also:
    • setFadeInDuration

      public final void setFadeInDuration(javafx.util.Duration duration)
      Sets the value of the fadeInDuration property.
      Property description:
      Stores the fade-in duration. This should be set before calling PopOver.show(…).
      Parameters:
      duration - the value for the fadeInDuration property
      See Also:
    • getFadeOutDuration

      public final javafx.util.Duration getFadeOutDuration()
      Gets the value of the fadeOutDuration property.
      Property description:
      Stores the fade-out duration.
      Returns:
      the value of the fadeOutDuration property
      See Also:
    • setFadeOutDuration

      public final void setFadeOutDuration(javafx.util.Duration duration)
      Sets the value of the fadeOutDuration property.
      Property description:
      Stores the fade-out duration.
      Parameters:
      duration - the value for the fadeOutDuration property
      See Also:
    • animatedProperty

      public final javafx.beans.property.BooleanProperty animatedProperty()
      Stores the "animated" flag. If true, then the PopOver will be shown / hidden with a short fade in / out animation.
      Returns:
      the "animated" property
      See Also:
    • isAnimated

      public final boolean isAnimated()
      Gets the value of the animated property.
      Property description:
      Stores the "animated" flag. If true, then the PopOver will be shown / hidden with a short fade in / out animation.
      Returns:
      the value of the animated property
      See Also:
    • setAnimated

      public final void setAnimated(boolean animated)
      Sets the value of the animated property.
      Property description:
      Stores the "animated" flag. If true, then the PopOver will be shown / hidden with a short fade in / out animation.
      Parameters:
      animated - the value for the animated property
      See Also: