JOptionPane makes it easy to pop up a standard dialog box that
prompts users for a value or informs them of something.
For information about using JOptionPane, see
How to Make Dialogs,
a section in The Java Tutorial.

While the JOptionPane
class may appear complex because of the large number of methods, almost
all uses of this class are one-line calls to one of the static
showXxxDialog methods shown below:

Method Name

Description

showConfirmDialog

Asks a confirming question, like yes/no/cancel.

showInputDialog

Prompt for some input.

showMessageDialog

Tell the user about something that has happened.

showOptionDialog

The Grand Unification of the above three.

Each of these methods also comes in a showInternalXXX
flavor, which uses an internal frame to hold the dialog box (see
JInternalFrame).
Multiple convenience methods have also been defined -- overloaded
versions of the basic methods that use different parameter lists.

All dialogs are modal. Each showXxxDialog method blocks
the current thread until the user's interaction is complete.

icon

message

input value

option buttons

The basic appearance of one of these dialog boxes is generally
similar to the picture at the right, although the various
look-and-feels are
ultimately responsible for the final result. In particular, the
look-and-feels will adjust the layout to accommodate the option pane's
ComponentOrientation property.

Parameters:
The parameters to these methods follow consistent patterns:

parentComponent

Defines the Component that is to be the parent of this
dialog box.
It is used in two ways: the Frame that contains
it is used as the Frame
parent for the dialog box, and its screen coordinates are used in
the placement of the dialog box. In general, the dialog box is placed
just below the component. This parameter may be null,
in which case a default Frame is used as the parent,
and the dialog will be
centered on the screen (depending on the L&F).

A descriptive message to be placed in the dialog box.
In the most common usage, message is just a String or
String constant.
However, the type of this parameter is actually Object. Its
interpretation depends on its type:

Object[]

An array of objects is interpreted as a series of
messages (one per object) arranged in a vertical stack.
The interpretation is recursive -- each object in the
array is interpreted according to its type.

Component

The Component is displayed in the dialog.

Icon

The Icon is wrapped in a JLabel
and displayed in the dialog.

others

The object is converted to a String by calling
its toString method. The result is wrapped in a
JLabel and displayed.

messageType

Defines the style of the message. The Look and Feel
manager may lay out the dialog differently depending on this value, and
will often provide a default icon. The possible values are:

ERROR_MESSAGE

INFORMATION_MESSAGE

WARNING_MESSAGE

QUESTION_MESSAGE

PLAIN_MESSAGE

optionType

Defines the set of option buttons that appear at
the bottom of the dialog box:

DEFAULT_OPTION

YES_NO_OPTION

YES_NO_CANCEL_OPTION

OK_CANCEL_OPTION

You aren't limited to this set of option buttons. You can provide any
buttons you want using the options parameter.

options

A more detailed description of the set of option buttons
that will appear at the bottom of the dialog box.
The usual value for the options parameter is an array of
Strings. But
the parameter type is an array of Objects.
A button is created for each object depending on its type:

Component

The component is added to the button row directly.

Icon

A JButton is created with this as its label.

other

The Object is converted to a string using its
toString method and the result is used to
label a JButton.

icon

A decorative icon to be placed in the dialog box. A default
value for this is determined by the messageType parameter.

title

The title for the dialog box.

initialValue

The default selection (input value).

When the selection is changed, setValue is invoked,
which generates a PropertyChangeEvent.

If a JOptionPane has configured to all input
setWantsInput
the bound property JOptionPane.INPUT_VALUE_PROPERTY
can also be listened
to, to determine when the user has input or selected a value.

When one of the showXxxDialog methods returns an integer,
the possible values are:

Warning:
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeansTM
has been added to the java.beans package.
Please see XMLEncoder.

showConfirmDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType)
Brings up a dialog where the number of choices is determined
by the optionType parameter, where the
messageType
parameter determines the icon to display.

static int

showConfirmDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon)
Brings up a dialog with a specified icon, where the number of
choices is determined by the optionType parameter.

showInputDialog(Component parentComponent,
Object message,
String title,
int messageType)
Shows a dialog requesting input from the user parented to
parentComponent with the dialog having the title
title and message type messageType.

showInternalConfirmDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType)
Brings up an internal dialog panel where the number of choices
is determined by the optionType parameter, where
the messageType parameter determines the icon to display.

static int

showInternalConfirmDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon)
Brings up an internal dialog panel with a specified icon, where
the number of choices is determined by the optionType
parameter.

showInternalInputDialog(Component parentComponent,
Object message,
String title,
int messageType)
Shows an internal dialog requesting input from the user parented
to parentComponent with the dialog having the title
title and message type messageType.

showInternalOptionDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon,
Object[] options,
Object initialValue)
Brings up an internal dialog panel with a specified icon, where
the initial choice is determined by the initialValue
parameter and the number of choices is determined by the
optionType parameter.

showOptionDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon,
Object[] options,
Object initialValue)
Brings up a dialog with a specified icon, where the initial
choice is determined by the initialValue parameter and
the number of choices is determined by the optionType
parameter.

JOptionPane

Creates an instance of JOptionPane to display a message
with the specified message type, icon, and options.
None of the options is initially selected.

The options objects should contain either instances of
Components, (which are added directly) or
Strings (which are wrapped in a JButton).
If you provide Components, you must ensure that when the
Component is clicked it messages setValue
in the created JOptionPane.

Parameters:

message - the Object to display

messageType - the type of message to be displayed:
ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE,
QUESTION_MESSAGE,
or PLAIN_MESSAGE

optionType - the options to display in the pane:
DEFAULT_OPTION,
YES_NO_OPTION,
YES_NO_CANCEL_OPTION,
OK_CANCEL_OPTION

showInputDialog

Shows a question-message dialog requesting input from the user, with
the input value initialized to initialSelectionValue. The
dialog uses the default frame, which usually means it is centered on
the screen.

showInputDialog

Shows a question-message dialog requesting input from the user and
parented to parentComponent. The input value will be
initialized to initialSelectionValue.
The dialog is displayed on top of the Component's
frame, and is usually positioned below the Component.

Prompts the user for input in a blocking dialog where the
initial selection, possible selections, and all other options can
be specified. The user will able to choose from
selectionValues, where null implies the
user can input
whatever they wish, usually by means of a JTextField.
initialSelectionValue is the initial value to prompt
the user with. It is up to the UI to decide how best to represent
the selectionValues, but usually a
JComboBox, JList, or
JTextField will be used.

Parameters:

parentComponent - the parent Component for the
dialog

message - the Object to display

title - the String to display in the
dialog title bar

messageType - the type of message to be displayed:
ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE,
QUESTION_MESSAGE,
or PLAIN_MESSAGE

icon - the Icon image to display

selectionValues - an array of Objects that
gives the possible selections

showConfirmDialog

Brings up a dialog where the number of choices is determined
by the optionType parameter, where the
messageType
parameter determines the icon to display.
The messageType parameter is primarily used to supply
a default icon from the Look and Feel.

Parameters:

parentComponent - determines the Frame in
which the dialog is displayed; if null,
or if the parentComponent has no
Frame, a
default Frame is used.

message - the Object to display

title - the title string for the dialog

optionType - an integer designating the options available
on the dialog: YES_NO_OPTION,
or YES_NO_CANCEL_OPTION

messageType - an integer designating the kind of message this is;
primarily used to determine the icon from the pluggable
Look and Feel: ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE,
QUESTION_MESSAGE,
or PLAIN_MESSAGE

showConfirmDialog

Brings up a dialog with a specified icon, where the number of
choices is determined by the optionType parameter.
The messageType parameter is primarily used to supply
a default icon from the look and feel.

Parameters:

parentComponent - determines the Frame in which the
dialog is displayed; if null,
or if the parentComponent has no
Frame, a
default Frame is used

message - the Object to display

title - the title string for the dialog

optionType - an int designating the options available on the dialog:
YES_NO_OPTION,
or YES_NO_CANCEL_OPTION

messageType - an int designating the kind of message this is,
primarily used to determine the icon from the pluggable
Look and Feel: ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE,
QUESTION_MESSAGE,
or PLAIN_MESSAGE

showOptionDialog

Brings up a dialog with a specified icon, where the initial
choice is determined by the initialValue parameter and
the number of choices is determined by the optionType
parameter.

If optionType is YES_NO_OPTION,
or YES_NO_CANCEL_OPTION
and the options parameter is null,
then the options are
supplied by the look and feel.

The messageType parameter is primarily used to supply
a default icon from the look and feel.

Parameters:

parentComponent - determines the Frame
in which the dialog is displayed; if
null, or if the
parentComponent has no
Frame, a
default Frame is used

message - the Object to display

title - the title string for the dialog

optionType - an integer designating the options available on the
dialog: YES_NO_OPTION,
or YES_NO_CANCEL_OPTION

messageType - an integer designating the kind of message this is,
primarily used to determine the icon from the
pluggable Look and Feel: ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE,
QUESTION_MESSAGE,
or PLAIN_MESSAGE

icon - the icon to display in the dialog

options - an array of objects indicating the possible choices
the user can make; if the objects are components, they
are rendered properly; non-String
objects are
rendered using their toString methods;
if this parameter is null,
the options are determined by the Look and Feel

initialValue - the object that represents the default selection
for the dialog; only meaningful if options
is used; can be null

Returns:

an integer indicating the option chosen by the user,
or CLOSED_OPTION if the user closed
the dialog

createDialog

Creates and returns a new JDialog wrapping
this centered on the parentComponent
in the parentComponent's frame.
title is the title of the returned dialog.
The returned JDialog will not be resizable by the
user, however programs can invoke setResizable on
the JDialog instance to change this property.
The returned JDialog will be set up such that
once it is closed, or the user clicks on one of the buttons,
the optionpane's value property will be set accordingly and
the dialog will be closed. Each time the dialog is made visible,
it will reset the option pane's value property to
JOptionPane.UNINITIALIZED_VALUE to ensure the
user's subsequent action closes the dialog properly.

Parameters:

parentComponent - determines the frame in which the dialog
is displayed; if the parentComponent has
no Frame, a default Frame is used

showInternalConfirmDialog

Brings up an internal dialog panel where the number of choices
is determined by the optionType parameter, where
the messageType parameter determines the icon to display.
The messageType parameter is primarily used to supply
a default icon from the Look and Feel.

Parameters:

parentComponent - determines the Frame in
which the dialog is displayed; if null,
or if the parentComponent has no
Frame, a default Frame is used

message - the object to display in the dialog; a
Component object is rendered as a
Component; a String
object is rendered as a string; other objects are
converted to a String using the
toString method

title - the title string for the dialog

optionType - an integer designating the options
available on the dialog:
YES_NO_OPTION, or YES_NO_CANCEL_OPTION

messageType - an integer designating the kind of message this is,
primarily used to determine the icon from the
pluggable Look and Feel: ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE, QUESTION_MESSAGE,
or PLAIN_MESSAGE

Returns:

an integer indicating the option selected by the user

showInternalConfirmDialog

Brings up an internal dialog panel with a specified icon, where
the number of choices is determined by the optionType
parameter.
The messageType parameter is primarily used to supply
a default icon from the look and feel.

Parameters:

parentComponent - determines the Frame
in which the dialog is displayed; if null,
or if the parentComponent has no Frame, a
default Frame is used

message - the object to display in the dialog; a
Component object is rendered as a
Component; a String
object is rendered as a string; other objects are
converted to a String using the
toString method

title - the title string for the dialog

optionType - an integer designating the options available
on the dialog:
YES_NO_OPTION, or
YES_NO_CANCEL_OPTION.

messageType - an integer designating the kind of message this is,
primarily used to determine the icon from the pluggable
Look and Feel: ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE, QUESTION_MESSAGE,
or PLAIN_MESSAGE

showInternalOptionDialog

Brings up an internal dialog panel with a specified icon, where
the initial choice is determined by the initialValue
parameter and the number of choices is determined by the
optionType parameter.

If optionType is YES_NO_OPTION, or
YES_NO_CANCEL_OPTION
and the options parameter is null,
then the options are supplied by the Look and Feel.

The messageType parameter is primarily used to supply
a default icon from the look and feel.

Parameters:

parentComponent - determines the Frame
in which the dialog is displayed; if null,
or if the parentComponent has no
Frame, a default Frame is used

message - the object to display in the dialog; a
Component object is rendered as a
Component; a String
object is rendered as a string. Other objects are
converted to a String using the
toString method

title - the title string for the dialog

optionType - an integer designating the options available
on the dialog: YES_NO_OPTION,
or YES_NO_CANCEL_OPTION

messageType - an integer designating the kind of message this is;
primarily used to determine the icon from the
pluggable Look and Feel: ERROR_MESSAGE,
INFORMATION_MESSAGE,
WARNING_MESSAGE, QUESTION_MESSAGE,
or PLAIN_MESSAGE

icon - the icon to display in the dialog

options - an array of objects indicating the possible choices
the user can make; if the objects are components, they
are rendered properly; non-String
objects are rendered using their toString
methods; if this parameter is null,
the options are determined by the Look and Feel

initialValue - the object that represents the default selection
for the dialog; only meaningful if options
is used; can be null

Returns:

an integer indicating the option chosen by the user,
or CLOSED_OPTION if the user closed the Dialog

showInternalInputDialog

Prompts the user for input in a blocking internal dialog where
the initial selection, possible selections, and all other
options can be specified. The user will able to choose from
selectionValues, where null
implies the user can input
whatever they wish, usually by means of a JTextField.
initialSelectionValue is the initial value to prompt
the user with. It is up to the UI to decide how best to represent
the selectionValues, but usually a
JComboBox, JList, or
JTextField will be used.

Parameters:

parentComponent - the parent Component for the dialog

message - the Object to display

title - the String to display in the dialog
title bar

messageType - the type of message to be displayed:
ERROR_MESSAGE, INFORMATION_MESSAGE,
WARNING_MESSAGE,
QUESTION_MESSAGE, or PLAIN_MESSAGE

icon - the Icon image to display

selectionValues - an array of Objects that
gives the possible selections

initialSelectionValue - the value used to initialize the input
field

Returns:

user's input, or null meaning the user
canceled the input

createInternalFrame

Creates and returns an instance of JInternalFrame.
The internal frame is created with the specified title,
and wrapping the JOptionPane.
The returned JInternalFrame is
added to the JDesktopPane ancestor of
parentComponent, or components
parent if one its ancestors isn't a JDesktopPane,
or if parentComponent
doesn't have a parent then a RuntimeException is thrown.

setValue

getValue

Returns the value the user has selected. UNINITIALIZED_VALUE
implies the user has not yet made a choice, null means the
user closed the window with out choosing anything. Otherwise
the returned value will be one of the options defined in this
object.

Returns:

the Object chosen by the user,
UNINITIALIZED_VALUE
if the user has not yet made a choice, or null if
the user closed the window without making a choice

setSelectionValues

Sets the input selection values for a pane that provides the user
with a list of items to choose from. (The UI provides a widget
for choosing one of the values.) A null value
implies the user can input whatever they wish, usually by means
of a JTextField.

Sets wantsInput to true. Use
setInitialSelectionValue to specify the initially-chosen
value. After the pane as been enabled, inputValue is
set to the value the user has selected.

Parameters:

newValues - an array of Objects the user to be
displayed
(usually in a list or combo-box) from which
the user can make a selection

setInputValue

Sets the input value that was selected or input by the user.
Only used if wantsInput is true. Note that this method
is invoked internally by the option pane (in response to user action)
and should generally not be called by client programs. To set the
input value initially displayed as selected to the user, use
setInitialSelectionValue.

Parameters:

newValue - the Object used to set the
value that the user specified (usually in a text field)

getMaxCharactersPerLineCount

Returns the maximum number of characters to place on a line in a
message. Default is to return Integer.MAX_VALUE.
The value can be
changed by overriding this method in a subclass.

Returns:

an integer giving the maximum number of characters on a line

setWantsInput

public void setWantsInput(boolean newValue)

Sets the wantsInput property.
If newValue is true, an input component
(such as a text field or combo box) whose parent is
parentComponent is provided to
allow the user to input a value. If getSelectionValues
returns a non-null array, the input value is one of the
objects in that array. Otherwise the input value is whatever
the user inputs.

paramString

Returns a string representation of this JOptionPane.
This method
is intended to be used only for debugging purposes, and the
content and format of the returned string may vary between
implementations. The returned string may be empty but may not
be null.

getAccessibleContext

Returns the AccessibleContext associated with this JOptionPane.
For option panes, the AccessibleContext takes the form of an
AccessibleJOptionPane.
A new AccessibleJOptionPane instance is created if necessary.