Top Description Inners Fields Constructors Methods
javafx.scene.control

public Class DialogPane

extends Pane
Class Inheritance
Annotations
@DefaultProperty:buttonTypes
Imports
java.lang.ref.WeakReference, java.util.ArrayList, .Collections, .List, .Map, .WeakHashMap, com.sun.javafx.scene.control.skin.Utils, com.sun.javafx.scene.control.skin.resources.ControlResources, javafx.beans.DefaultProperty, .InvalidationListener, javafx.beans.property.BooleanProperty, .ObjectProperty, .SimpleBooleanProperty, .SimpleObjectProperty, .SimpleStringProperty, .StringProperty, javafx.beans.value.WritableValue, javafx.collections.FXCollections, .ListChangeListener, .ObservableList, javafx.css.CssMetaData, .StyleOrigin, .Styleable, .StyleableObjectProperty, .StyleableProperty, .StyleableStringProperty, javafx.event.ActionEvent, javafx.geometry.Pos, javafx.scene.AccessibleRole, .Node, javafx.scene.control.ButtonBar.ButtonData, javafx.scene.image.Image, .ImageView, javafx.scene.layout.ColumnConstraints, .GridPane, .Pane, .Priority, .Region, .StackPane, com.sun.javafx.css.StyleManager, javafx.css.converter.StringConverter

DialogPane should be considered to be the root node displayed within a Dialog instance. In this role, the DialogPane is responsible for the placement of headers, graphics, content, and buttons. The default implementation of DialogPane (that is, the DialogPane class itself) handles the layout via the normal layoutChildren() method. This method may be overridden by subclasses wishing to handle the layout in an alternative fashion).

In addition to the header and content properties, there exists header text and content text properties. The way the *Text properties work is that they are a lower precedence compared to the Node properties, but they are far more convenient for developers in the common case, as it is likely the case that a developer more often than not simply wants to set a string value into the header or content areas of the DialogPane.

It is important to understand the implications of setting non-null values in the header and headerText properties. The key points are as follows:

  1. The header property takes precedence over the headerText property, so if both are set to non-null values, header will be used and headerText will be ignored.
  2. If headerText is set to a non-null value, and a graphic has also been set, the default position for the graphic shifts from being located to the left of the content area to being to the right of the header text.
  3. If header is set to a non-null value, and a graphic has also been set, the graphic is removed from its default position (to the left of the content area), and is not placed to the right of the custom header node. If the graphic is desired, it should be manually added in to the layout of the custom header node manually.

DialogPane operates on the concept of ButtonType. A ButtonType is a descriptor of a single button that should be represented visually in the DialogPane. Developers who create a DialogPane therefore must specify the button types that they want to display, and this is done via the getButtonTypes() method, which returns a modifiable ObservableList, which users can add to and remove from as desired.

The ButtonType class defines a number of pre-defined button types, such as ButtonType#OK and ButtonType#CANCEL. Many users of the JavaFX dialogs API will find that these pre-defined button types meet their needs, particularly due to their built-in support for default and cancel buttons, as well as the benefit of the strings being translated into all languages which JavaFX is translated to. For users that want to define their own ButtonType (most commonly to define a button with custom text), they may do so via the constructors available on the ButtonType class.

Developers will quickly find that the amount of configurability offered via the ButtonType class is minimal. This is intentional, but does not mean that developers can not modify the buttons created by the ButtonType that have been specified. To do this, developers simply call the lookupButton(ButtonType) method with the ButtonType (assuming it has already been set in the getButtonTypes() list. The returned Node is typically of type Button, but this depends on if the createButton(ButtonType) method has been overridden.

The DialogPane class offers a few methods that can be overridden by subclasses, to more easily enable custom functionality. These methods include the following:

These methods are documented, so please take note of the expectations placed on any developer who wishes to override these methods with their own functionality.

Since
JavaFX 8u40
See Also
Dialog

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class

Field Summary

Modifier and TypeField and Description
private final Node
private final Map<ButtonType, Node>
private final ObservableList<ButtonType>
private final ObjectProperty<Node>
private final Label
private final StringProperty
private Node
private Dialog<?>
private final ObjectProperty<Node>
private final BooleanProperty
private final StackPane
private final ObjectProperty<Node>
private final ObjectProperty<Node>
private final StringProperty
private final GridPane
private StyleableStringProperty
private double

Constructor Summary

AccessConstructor and Description
public
DialogPane()

Creates a new DialogPane instance with a style class of 'dialog-pane'.

Method Summary

Modifier and TypeMethod and Description
protected double
computeMinHeight(double
the width that should be used if min height depends on it
width
)

Overrides javafx.scene.layout.Region.computeMinHeight.

Computes the minimum height of this region.

protected double
computeMinWidth(double
the height that should be used if min width depends on it
height
)

Overrides javafx.scene.layout.Region.computeMinWidth.

Computes the minimum width of this region.

protected double
computePrefHeight(double
the width that should be used if preferred height depends on it
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
the height that should be used if preferred width depends on it
height
)

Overrides javafx.scene.layout.Region.computePrefWidth.

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

public final ObjectProperty<Node>

Returns:

the property representing the content area of the dialog
contentProperty
()

Property representing the content area of the dialog.

public final StringProperty

Returns:

the property representing the content text for the dialog pane
contentTextProperty
()

A property representing the content text for the dialog pane.

protected Node

Returns:

A JavaFX Node that represents the given ButtonType, most commonly an instance of Button.
createButton
(ButtonType
The ButtonType to create a button from.
buttonType
)

This method can be overridden by subclasses to create a custom button that will subsequently inserted into the DialogPane button area (created via the createButtonBar() method, but mostly commonly it is an instance of ButtonBar.

protected Node

Returns:

the created button bar
createButtonBar
()

This method can be overridden by subclasses to provide the button bar.

pack-priv static Label
createContentLabel(String
The text to display
text
)

Creates a Label node that works well within a Dialog.

protected Node

Returns:

the created details button
createDetailsButton
()

This method can be overridden by subclasses to create a custom details button.

public final ObjectProperty<Node>

Returns:

the property that represents the dialog expandable content area
expandableContentProperty
()

A property that represents the dialog expandable content area.

public final BooleanProperty

Returns:

the property representing whether the dialogPane is expanded
expandedProperty
()

Represents whether the dialogPane is expanded.

private Node
private Node
private Node
public final ObservableList<ButtonType>

Returns:

The ObservableList of button types available to the user.
getButtonTypes
()

Observable list of button types used for the dialog button bar area (created via the createButtonBar() method).

public static List<CssMetaData<? extends Styleable, ?>>

Returns:

the CssMetaData
getClassCssMetaData
()

Hides javafx.scene.layout.Region.getClassCssMetaData.

Gets the CssMetaData associated with this class, which may include the CssMetaData of its superclasses.

public final Node

Returns:

dialog's content
getContent
()

Returns the dialog content as a Node (even if it was set as a String using setContentText(String) - this was simply transformed into a Node (most probably a Label).

public final String

Returns:

the currently-set content text for this DialogPane
getContentText
()

Returns the currently-set content text for this DialogPane.

public List<CssMetaData<? extends Styleable, ?>>
getCssMetaData()

Overrides javafx.scene.layout.Region.getCssMetaData.

Implements javafx.css.Styleable.getCssMetaData.

This method should delegate to Node#getClassCssMetaData() so that a Node's CssMetaData can be accessed without the need for reflection.

public final Node

Returns:

the dialog expandable content node
getExpandableContent
()

Returns the dialog expandable content node, if one is set, or null otherwise.

public final Node
public final Node

Returns:

the header of the dialog pane.
getHeader
()

Node which acts as the dialog pane header.

public final String

Returns:

the currently-set header text for this DialogPane
getHeaderText
()

Returns the currently-set header text for this DialogPane.

public final ObjectProperty<Node>

Returns:

An ObjectProperty wrapping the current graphic.
graphicProperty
()

The dialog graphic, presented either in the header, if one is showing, or to the left of the content.

pack-priv boolean
pack-priv boolean
public final ObjectProperty<Node>

Returns:

the property representing the header area of the dialog pane
headerProperty
()

Property representing the header area of the dialog pane.

public final StringProperty

Returns:

the property representing the header text for the dialog pane
headerTextProperty
()

A property representing the header text for the dialog pane.

private StyleableStringProperty
imageUrlProperty()

The imageUrl property is set from CSS and then the graphic property is set from the invalidated method.

public final boolean

Returns:

true if dialogPane is expanded.
isExpanded
()

Returns whether or not the dialogPane is expanded.

private boolean
protected void
layoutChildren()

Overrides javafx.scene.Parent.layoutChildren.

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

public final Node

Returns:

The Node used to represent the button type, as created by createButton(ButtonType), and only if the button type is part of the button types list, otherwise null.
lookupButton
(ButtonType
The ButtonType for which a Node representation is requested.
buttonType
)

This method provides a way in which developers may retrieve the actual Node for a given ButtonType (assuming it is part of the button types list).

public final void
setContent(Node
dialog's content
content
)

Assign dialog content.

public final void
setContentText(String
the string to show in the dialog content area
contentText
)

Sets the string to show in the dialog content area.

pack-priv void
setDialog(Dialog<?> dialog)

public final void
setExpandableContent(Node
the dialog expandable content node
content
)

Sets the dialog expandable content node, or null if no expandable content needs to be shown.

public final void
setExpanded(boolean
true if dialogPane should be expanded.
value
)

Sets whether the dialogPane is expanded.

public final void
setGraphic(Node
The new dialog graphic, or null if no graphic should be shown.
graphic
)

Sets the dialog graphic, which will be displayed either in the header, if one is showing, or to the left of the content.

public final void
setHeader(Node
The new header of the DialogPane.
header
)

Assigns the dialog pane header.

public final void
setHeaderText(String
the string to show in the dialog header area
headerText
)

Sets the string to show in the dialog header area.

private void
private void
private void
Inherited from javafx.scene.layout.Pane:
getChildren

Field Detail

buttonBarback to summary
private final Node buttonBar
buttonNodesback to summary
private final Map<ButtonType, Node> buttonNodes
buttonsback to summary
private final ObservableList<ButtonType> buttons
contentback to summary
private final ObjectProperty<Node> content
contentLabelback to summary
private final Label contentLabel
contentTextback to summary
private final StringProperty contentText
detailsButtonback to summary
private Node detailsButton
dialogback to summary
private Dialog<?> dialog
expandableContentPropertyback to summary
private final ObjectProperty<Node> expandableContentProperty
expandedPropertyback to summary
private final BooleanProperty expandedProperty
graphicContainerback to summary
private final StackPane graphicContainer
graphicPropertyback to summary
private final ObjectProperty<Node> graphicProperty
headerTextback to summary
private final StringProperty headerText
headerTextPanelback to summary
private final GridPane headerTextPanel
imageUrlback to summary
private StyleableStringProperty imageUrl
oldHeightback to summary
private double oldHeight

Constructor Detail

DialogPaneback to summary
public DialogPane()

Creates a new DialogPane instance with a style class of 'dialog-pane'.

Method Detail

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.

Parameters
width:double

Doc from javafx.scene.Parent.computeMinHeight.

the width that should be used if min height depends on it

Returns:double

the computed minimum height for this region

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.

Parameters
height:double

Doc from javafx.scene.Parent.computeMinWidth.

the height that should be used if min width depends on it

Returns:double

the computed minimum width of this region

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.

Parameters
width:double

Doc from javafx.scene.Parent.computePrefHeight.

the width that should be used if preferred height depends on it

Returns:double

the computed preferred height for this region

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.

Parameters
height:double

Doc from javafx.scene.Parent.computePrefWidth.

the height that should be used if preferred width depends on it

Returns:double

the computed preferred width for this region

Annotations
@Override
contentPropertyback to summary
public final ObjectProperty<Node> contentProperty()

Property representing the content area of the dialog.

Returns:ObjectProperty<Node>

the property representing the content area of the dialog

contentTextPropertyback to summary
public final StringProperty contentTextProperty()

A property representing the content text for the dialog pane. The content text is lower precedence than the content node, meaning that if both the content node and the contentText properties are set, the content text will not be displayed in a default DialogPane instance.

Returns:StringProperty

the property representing the content text for the dialog pane

createButtonback to summary
protected Node createButton(ButtonType buttonType)

This method can be overridden by subclasses to create a custom button that will subsequently inserted into the DialogPane button area (created via the createButtonBar() method, but mostly commonly it is an instance of ButtonBar.

Parameters
buttonType:ButtonType

The ButtonType to create a button from.

Returns:Node

A JavaFX Node that represents the given ButtonType, most commonly an instance of Button.

createButtonBarback to summary
protected Node createButtonBar()

This method can be overridden by subclasses to provide the button bar. Note that by overriding this method, the developer must take on multiple responsibilities:

  1. The developer must immediately iterate through all button types and call createButton(ButtonType) for each of them in turn.
  2. The developer must add a listener to the button types list, and when this list changes update the button bar as appropriate.
  3. Similarly, the developer must watch for changes to the expandable content property, adding and removing the details button (created via createDetailsButton() method).

The default implementation of this method creates and returns a new ButtonBar instance.

Returns:Node

the created button bar

createContentLabelback to summary
pack-priv static Label createContentLabel(String text)

Creates a Label node that works well within a Dialog.

Parameters
text:String

The text to display

createDetailsButtonback to summary
protected Node createDetailsButton()

This method can be overridden by subclasses to create a custom details button.

To override this method you must do two things:

  1. The button will need to have its own code set to handle mouse / keyboard interaction and to toggle the state of the expanded property.
  2. If your button changes its visuals based on whether the dialog pane is expanded or collapsed, you should add a listener to the expanded property, so that you may update the button visuals.
Returns:Node

the created details button

expandableContentPropertyback to summary
public final ObjectProperty<Node> expandableContentProperty()

A property that represents the dialog expandable content area. Any Node can be placed in this area, but it will only be shown when the user clicks the 'Show Details' expandable button. This button will be added automatically when the expandable content property is non-null.

Returns:ObjectProperty<Node>

the property that represents the dialog expandable content area

expandedPropertyback to summary
public final BooleanProperty expandedProperty()

Represents whether the dialogPane is expanded.

Returns:BooleanProperty

the property representing whether the dialogPane is expanded

getActualContentback to summary
private Node getActualContent()
getActualGraphicback to summary
private Node getActualGraphic()
getActualHeaderback to summary
private Node getActualHeader()
getButtonTypesback to summary
public final ObservableList<ButtonType> getButtonTypes()

Observable list of button types used for the dialog button bar area (created via the createButtonBar() method). Modifying the contents of this list will immediately change the buttons displayed to the user within the dialog pane.

Returns:ObservableList<ButtonType>

The ObservableList of button types available to the user.

getClassCssMetaDataback to summary
public static List<CssMetaData<? extends Styleable, ?>> getClassCssMetaData()

Hides javafx.scene.layout.Region.getClassCssMetaData.

Gets the CssMetaData associated with this class, which may include the CssMetaData of its superclasses.

Returns:List<CssMetaData<? extends Styleable, ?>>

the CssMetaData

getContentback to summary
public final Node getContent()

Returns the dialog content as a Node (even if it was set as a String using setContentText(String) - this was simply transformed into a Node (most probably a Label).

Returns:Node

dialog's content

getContentTextback to summary
public final String getContentText()

Returns the currently-set content text for this DialogPane.

Returns:String

the currently-set content text for this DialogPane

getCssMetaDataback to summary
public List<CssMetaData<? extends Styleable, ?>> getCssMetaData()

Overrides javafx.scene.layout.Region.getCssMetaData.

Implements javafx.css.Styleable.getCssMetaData.

Doc from javafx.scene.layout.Region.getCssMetaData.

This method should delegate to Node#getClassCssMetaData() so that a Node's CssMetaData can be accessed without the need for reflection.

Returns:List<CssMetaData<? extends Styleable, ?>>

Doc from javafx.scene.Node.getCssMetaData.

The CssMetaData associated with this node, which may include the CssMetaData of its superclasses.

Annotations
@Override
getExpandableContentback to summary
public final Node getExpandableContent()

Returns the dialog expandable content node, if one is set, or null otherwise.

Returns:Node

the dialog expandable content node

getGraphicback to summary
public final Node getGraphic()
getHeaderback to summary
public final Node getHeader()

Node which acts as the dialog pane header.

Returns:Node

the header of the dialog pane.

getHeaderTextback to summary
public final String getHeaderText()

Returns the currently-set header text for this DialogPane.

Returns:String

the currently-set header text for this DialogPane

graphicPropertyback to summary
public final ObjectProperty<Node> graphicProperty()

The dialog graphic, presented either in the header, if one is showing, or to the left of the content.

Returns:ObjectProperty<Node>

An ObjectProperty wrapping the current graphic.

hasExpandableContentback to summary
pack-priv boolean hasExpandableContent()
hasHeaderback to summary
pack-priv boolean hasHeader()
headerPropertyback to summary
public final ObjectProperty<Node> headerProperty()

Property representing the header area of the dialog pane. Note that if this header is set to a non-null value, that it will take up the entire top area of the DialogPane. It will also result in the DialogPane switching its layout to the 'header' layout - as outlined in the DialogPane class javadoc.

Returns:ObjectProperty<Node>

the property representing the header area of the dialog pane

headerTextPropertyback to summary
public final StringProperty headerTextProperty()

A property representing the header text for the dialog pane. The header text is lower precedence than the header node, meaning that if both the header node and the headerText properties are set, the header text will not be displayed in a default DialogPane instance.

When headerText is set to a non-null value, this will result in the DialogPane switching its layout to the 'header' layout - as outlined in the DialogPane class javadoc.

Returns:StringProperty

the property representing the header text for the dialog pane

imageUrlPropertyback to summary
private StyleableStringProperty imageUrlProperty()

The imageUrl property is set from CSS and then the graphic property is set from the invalidated method. This ensures that the same image isn't reloaded.

isExpandedback to summary
public final boolean isExpanded()

Returns whether or not the dialogPane is expanded.

Returns:boolean

true if dialogPane is expanded.

isTextHeaderback to summary
private boolean isTextHeader()
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
lookupButtonback to summary
public final Node lookupButton(ButtonType buttonType)

This method provides a way in which developers may retrieve the actual Node for a given ButtonType (assuming it is part of the button types list).

Parameters
buttonType:ButtonType

The ButtonType for which a Node representation is requested.

Returns:Node

The Node used to represent the button type, as created by createButton(ButtonType), and only if the button type is part of the button types list, otherwise null.

setContentback to summary
public final void setContent(Node content)

Assign dialog content. Any Node can be used

Parameters
content:Node

dialog's content

setContentTextback to summary
public final void setContentText(String contentText)

Sets the string to show in the dialog content area. Note that the content text is lower precedence than the content node, meaning that if both the content node and the contentText properties are set, the content text will not be displayed in a default DialogPane instance.

Parameters
contentText:String

the string to show in the dialog content area

setDialogback to summary
pack-priv void setDialog(Dialog<?> dialog)
setExpandableContentback to summary
public final void setExpandableContent(Node content)

Sets the dialog expandable content node, or null if no expandable content needs to be shown.

Parameters
content:Node

the dialog expandable content node

setExpandedback to summary
public final void setExpanded(boolean value)

Sets whether the dialogPane is expanded. This only makes sense when there is expandable content to show.

Parameters
value:boolean

true if dialogPane should be expanded.

setGraphicback to summary
public final void setGraphic(Node graphic)

Sets the dialog graphic, which will be displayed either in the header, if one is showing, or to the left of the content.

Parameters
graphic:Node

The new dialog graphic, or null if no graphic should be shown.

setHeaderback to summary
public final void setHeader(Node header)

Assigns the dialog pane header. Any Node can be used.

Parameters
header:Node

The new header of the DialogPane.

setHeaderTextback to summary
public final void setHeaderText(String headerText)

Sets the string to show in the dialog header area. Note that the header text is lower precedence than the header node, meaning that if both the header node and the headerText properties are set, the header text will not be displayed in a default DialogPane instance.

When headerText is set to a non-null value, this will result in the DialogPane switching its layout to the 'header' layout - as outlined in the DialogPane class javadoc.

Parameters
headerText:String

the string to show in the dialog header area

updateButtonsback to summary
private void updateButtons(ButtonBar buttonBar)
updateContentAreaback to summary
private void updateContentArea()
updateHeaderAreaback to summary
private void updateHeaderArea()
javafx.scene.control back to summary

private Class DialogPane.StyleableProperties

extends Object
Class Inheritance

Field Summary

Modifier and TypeField and Description
private static final CssMetaData<DialogPane, String>
private static final List<CssMetaData<? extends Styleable, ?>>

Constructor Summary

AccessConstructor and Description
private

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

GRAPHICback to summary
private static final CssMetaData<DialogPane, String> GRAPHIC
STYLEABLESback to summary
private static final List<CssMetaData<? extends Styleable, ?>> STYLEABLES

Constructor Detail

StyleablePropertiesback to summary
private StyleableProperties()