3.4.7细说JOptionPane
我们曾介绍和使用过JOptionPane的简单输入、输出操作。让我们走进javax.swing库包中的JOptionPane,以此为例,详细探讨怎样利用库包文档来了解类的功能,并如何利用API类来编写程序。图3.4显示了JOptionPane类的文档网页内容。(见本书第3章)
图中的上端显示了这个类的继承链和接口。我们将在以后的章节讨论类的继承和接口问题。网页中间部分解释了这个类的主要功能。下方列出了这个类所提供的方法。我们已经简单使用过其中的两个方法。首先,让我们深入了解这两个方法及其其他功能;然后介绍其他我们还没有应用过的方法,如showConfirmDialog()。希望我们这个学习步骤对通过库包文档网页来了解和使用库类,都有所帮助。表3.11列出了JOptionPane的常用方法。
3WJOptionPane属于javax.swing库包,提供了功能强大的图像用户接口(GUI)以及对话式的输入、输出操作。由于它的方法都是静态的(static),我们不用创建对象,直接用类名就可以调用其方法。
表3.11JOptionPane常用方法
方法
功能
public Static String showInputDialog(Object message)
显示一个有message的对话窗口,并将用户在输入域输入的数据按字符串返回。message通常为字符串。
public static String
showInputDialog(Obj-ect message,ObjectinitialSelecti-
onValue)
显示一个有message的对话窗口,并在输入域显示预设值initialSelectionValue。将用户在输入域输入的数据或预设值按字符串返回。message和initialSelectionValue通常为字符串。
public static String showInputDialog(Component parentComponent,
Objectmessage, Object initialSelectionValue)
在上一级窗口parentComponent中显示一个有message的对话窗口,并在输入域显示预设值initialSelectionValue。将用户在输入域输入的数据或预设值按字符串返回。parentComponent通常为null;message和initialSelectionValue通常为字符串。
续表
方法
功能
public static String showInputDialog(Component parentComponent,Object message,String title,
int messageType)
在上一级窗口parentComponent中显示一个有message的对话窗口,并显示对话窗口标题title,以及消息图标messageType。将用户在输入域输入的数据按字符串返回。parentComponent通常为null;message和initialSelectionValue通常为字符串;messageType的值见表3.12。
public static void showMessageDialog(Component parentComponent,
Objectmessage)
在上一级窗口parentComponent中显示一个有message的输出窗口。parentComponent通常为null;message通常为字符串,或者GUI组件。
public static void showMessageDialog(Component parentComponent,Object message,String title,
int messageType)
在上一级窗口parentComponent中显示一个有message的输出窗口,并显示窗口标题title,以及消息图标messageType。parentComponent通常为null;message通常为字符串,或者GUI组件。messageType的值见表3.12。
public static int showConfirmDialog(Component parentComponent,
Objectmessage)
显示一个带有选项按钮Yes、No和Cancel的message对话窗口,并返回用户的选项(Yes=1、No=2,Cancel=3)值。窗口标题为Select an Option。
表3.12 JOptionPane的消息图标类型
消息图标类型
整数值
图标
ERROR_MESSAGE
0
X型图标
INFORMATION_MESSAGE
1
倒惊叹号图标
WARNING_MESSAGE
2
惊叹号图标
QUESTION_MESSAGE
3
问号图标
PLAIN_MESSAGE
-1
不显示任何图标
不难看出,JOptionPane的所有方法都是static,即这些方法可以直接用JOptionPane调用,而不用创建对象。这种方法被称作静态方法。我们将在以后的章节详细讨论静态方法和它的应用。另外,JOptionPane提供的这些方法可以总结为两种类型:提供对话窗口,提示用户输入,并返回输入值的方法,如showInputDialog()和showComfirmDialog();以及显示输出信息的方法,如showMessageDialog()。虽然有些方法的参数较多,参数类型也较多样化,但万变不离其宗。懂得了基本应用,其他也就不难了。
当然,对于初学者来说,试图从类库文档网页或本书的列表解释中懂得和掌握列举的类和方法是不可能的。可行的学习方法如下:
1.大概了解列表和解释的含义。
2.知道这个方法的返回类型和参数要求,如几个参数和每个参数的类型。
3.打开一个IDE,如Eclipse,编写一个测试程序,按照方法规范和解释,输入这个方法。“亲口尝尝梨子的滋味。”
4.对照文档网页,列表和解释,加深理解。
5.参考其他例子,掌握应用。
以下代码测试了所有列在表3.12中的方法。表3.13列出了程序的运行结果和方法调用对照。
//完整程序在本书配套资源目录Ch3中名为TestJOptionPaneApp.java
//Demo of testing the
methods of JOptionPane
import
javax.swing.JOptionPane;
public class
TestJOptionPaneApp {
public static void main(String[] args) {
//test the first method listed in 3.11 with one argument
String str = JOptionPane.showInputDialog("please enter a
number: ");
//test the second one with 2 arguments. "120" should be
the default entry
str = JOptionPane.showInputDialog("please enter a number:
", "120");
//test the fourth one with 4 arguments
str = JOptionPane.showInputDialog(null, "please enter a
number: ",
"Input windows", -1);
//test the fifth one with 2 arguments
JOptionPane.showMessageDialog(null, "This is another
testing.");
//test the sixth one with 4 arguments;
//the JOptionPane.QUESTION_MESSAGE can be 3
JOptionPane.showMessageDialog(null, "Testing..... " +
str,
"Testing Window",
JOptionPane.QUESTION_MESSAGE );
//test the last one: showConfirmDialog()
JOptionPane.showConfirmDialog(null, "Make a choice: ");
} //end of main()
} //end of
TestJOptionPaneApp
通过这个测试程序,我们更进一步了解到,在showInputDialog()中,如果没有规定消息图标类型,则自动显示问号图标QUESTION_MESSAGE;而在showMessageDialog()中,则自动显示信息图标INFORMATION_MESSAGE。在showConfirmDialog()中,预先设置的选项为按钮Yes。
在以后的章节中,当介绍和讨论了GUI组件和JFrame后,我们将使用parentComponent替换null,来测试它们的运行结果,并比较和总结它们的不同之处。
以上例子的运行结果见本书第三章表3.13。
更多信息Java虚拟机把输入、输出信息一律按照字符串形式处理。即在进行输入操作时,将所有输入数据都转换成字符串;在进行输出操作时,要求输出信息必须是字符串形式。所以我们在程序中必须做相应的转换。