| showConfirmDialog | 询问一个确认问题,如 yes/no/cancel。 |
| showInputDialog | 提示要求某些输入。 |
| showMessageDialog | 告知用户某事已发生。 |
| showOptionDialog | 上述三项的大统一 (Grand Unification)。 |
所有这些方法还可能以 showInternalXXX 风格出现,该风格使用内部窗体来保存对话框(请参见 JInternalFrame)。此外还定义了多种便捷方法,这些方法重载那些基本方法,使用不同的参数列表。
所有对话框都是有模式的。在用户交互完成之前,每个 showXxxDialog 方法都一直阻塞当前线程。
| 图标 | 消息 |
| 输入值 | |
| 选项按钮 | |
ComponentOrientation 属性。
参数:
这些方法的参数遵守一致的模式:
parentComponent
messageType- 定义作为此对话框的父对话框的
Component。通过两种方式使用此参数:包含它的Frame可以用作对话框的父Frame,在对话框的位置使用其屏幕坐标。一般情况下,将对话框紧靠组件置于其之下。此参数可以为null,在这种情况下,默认的Frame用作父级,并且对话框将居中位于屏幕上(取决于 L&F)。- 要置于对话框中的描述消息。在最常见的应用中,message 就是一个
String或String常量。不过,此参数的类型实际上是Object。其解释依赖于其类型:Object[]
- 对象数组被解释为在纵向堆栈中排列的一系列 message(每个对象一个)。解释是递归式的,即根据其类型解释数组中的每个对象。
Component- 该
IconComponent在对话框中显示。- 该
其他Icon被包装在JLabel中并在对话框中显示。- 该对象通过调用其
toString方法被转换为String。结果被包装在JLabel中显示。定义 message 的样式。外观管理器布置的对话框可能因此值而异,并且往往提供默认图标。可能的值为: optionType
ERROR_MESSAGEINFORMATION_MESSAGEWARNING_MESSAGEQUESTION_MESSAGEPLAIN_MESSAGE定义在对话框的底部显示的选项按钮的集合: options用户并非仅限于使用选项按钮的此集合。使用 options 参数可以提供想使用的任何按钮。
DEFAULT_OPTIONYES_NO_OPTIONYES_NO_CANCEL_OPTIONOK_CANCEL_OPTION对将在对话框底部显示的选项按钮集合的更详细描述。options 参数的常规值是 iconString数组,但是参数类型是Object数组。根据对象的以下类型为每个对象创建一个按钮:Component
- 该组件被直接添加到按钮行中。
Icon- 创建的
其他JButton以此图标作为其标签。- 该
Object通过使用其toString方法转换为字符串,并使用该结果作为JButton的标签。
要置于对话框中的装饰性图标。图标的默认值由 titlemessageType参数确定。对话框的标题。 initialValue默认选择(输入值)。
当选择更改时,调用生成 PropertyChangeEvent 的 setValue 方法。
如果已为所有输入 setWantsInput 配置了 JOptionPane,则还可以侦听 bound 属性 JOptionPane.INPUT_VALUE_PROPERTY,以确定何时用户输入或选择了值。
当其中一个 showXxxDialog 方法返回整数时,可能的值为:
YES_OPTIONNO_OPTIONCANCEL_OPTIONOK_OPTIONCLOSED_OPTION
示例:
-
显示一个错误对话框,该对话框显示的 message 为 'alert':
-
JOptionPane.showMessageDialog(null, "alert", "alert", JOptionPane.ERROR_MESSAGE);
显示一个内部信息对话框,其 message 为 'information':
-
JOptionPane.showInternalMessageDialog(frame, "information",
- "information", JOptionPane.INFORMATION_MESSAGE);
显示一个信息面板,其 options 为 "yes/no",message 为 'choose one':
-
JOptionPane.showConfirmDialog(null,- "choose one", "choose one", JOptionPane.YES_NO_OPTION);
显示一个内部信息对话框,其 options 为 "yes/no/cancel",message 为 'please choose one',并具有 title 信息:
-
JOptionPane.showInternalConfirmDialog(frame,- "please choose one", "information",
- JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE);
显示一个警告对话框,其 options 为 OK、CANCEL,title 为 'Warning',message 为 'Click OK to continue':
-
Object[] options = { "OK", "CANCEL" };
JOptionPane.showOptionDialog(null, "Click OK to continue", "Warning",- JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
- null, options, options[0]);
显示一个要求用户键入 String 的对话框:
-
String inputValue = JOptionPane.showInputDialog("Please input a value");
显示一个要求用户选择 String 的对话框:
-
Object[] possibleValues = { "First", "Second", "Third" };
Object selectedValue = JOptionPane.showInputDialog(null,- "Choose one", "Input",
- JOptionPane.INFORMATION_MESSAGE, null,
- possibleValues, possibleValues[0]);
直接使用:
要直接创建和使用 JOptionPane,标准模式大致如下:
JOptionPane pane = new JOptionPane(arguments);
pane.set.Xxxx(...); // Configure
JDialog dialog = pane.createDialog(parentComponent, title);
dialog.show();
Object selectedValue = pane.getValue();
if(selectedValue == null)
return CLOSED_OPTION;
//If there is not an array of option buttons:
if(options == null) {
if(selectedValue instanceof Integer)
return ((Integer)selectedValue).intValue();
return CLOSED_OPTION;
}
//If there is an array of option buttons:
for(int counter = 0, maxCounter = options.length;
counter < maxCounter; counter++) {
if(options[counter].equals(selectedValue))
return counter;
}
return CLOSED_OPTION;
627

被折叠的 条评论
为什么被折叠?



