确认对话框ConfirmDialog和选择对话框OptionDialog:猜数游戏
?
确认对话框ConfirmDialog给出提示信息和若干个按钮供用户选择,共有4个showConfirmDialog重载方法。对话框的按钮通常为:“是”、“否”、“取消”和“确认”及组合,showConfirmDialog()方法的返回值为整型常量,当按下一个按钮时,返回相应的整型常量,“是”、“否”、“取消”和“确认”对应的常量分别是:0、1、2、0,当按下对话框的“关闭按钮”关闭对话框时,返回值是:-1。
这个方法由参数“Object?message”给出提示信息,按钮为默认的“是”、“否”和“取消”。
例:intn=JOptionPane.showConfirmDialog(null, "提示信息");

2.showConfirmDialog(ComponentparentComponent, Object message, String title, int optionType);
参数“int optionType”确定了按钮的定制,具体取值是:
DEFAULT_OPTION //“确定”按钮
YES_NO_OPTION //“是”、“否”按钮
YES_NO_CANCEL_OPTION//“是”、“否”、“取消”按钮
OK_CANCEL_OPTION//“确定”、“取消”按钮
参数“Object message”给出提示信息,参数“String title”给出对话框标题。
例intn=JOptionPane.showConfirmDialog(null, "提示信息","标题",JOptionPane.DEFAULT_OPTION);

只有一个“确定”选择,选中后返回值是0。
例intn=JOptionPane.showConfirmDialog(null, "提示信息","标题",JOptionPane.YES_NO_OPTION);

选中“是”返回0,选中“否”返回1。
例intn=JOptionPane.showConfirmDialog(null, "提示信息","标题",JOptionPane.YES_NO_CANCEL_OPTION);

返回值:“是”:0,“否”:1,“取消”:2 。
?
例intn=JOptionPane.showConfirmDialog(null, "提示信息","标题",JOptionPane.OK_CANCEL_OPTION);

返回值:“确定”:0,“取消”:2 。
?
3.showConfirmDialog(ComponentparentComponent, Object message, String title, int optionType, int messageType);
这个方法增加了一个图标类型的参数“intmessageType”,具体取值是:
ERROR_MESSAGE
INFORMATION_MESSAGE
WARNING_MESSAGE
QUESTION_MESSAGE(默认类型)
PLAIN_MESSAGE(无图标)
具体应用可参考消息对话框的实例。
?? ? ?
4. showConfirmDialog(ComponentparentComponent, Object message, String title, int optionType, int messageType,Icon icon) ;
这个方法增加了一个参数“Icon icon”,通过该参数,用户可以把自己的图标添加到对话框中;

5. showOptionDialog(ComponentparentComponent, Object message, String title, int optionType, int messageType,Icon icon, Object[] options, Object initialValue);
选择对话框OptionDialog是一个充分由用户自定义的对话框,showOptionDialog是一个8个参数的方法,参数“Object[] options”定义了一个按钮数组集合,每个按钮对应的返回值是其在数组中的下标,当参数“Object[] options”不空时,参数“intoptionType”和“int messageType”作用不大,参数“Object initialValue”确定了默认选中的按钮。
例:

?
import javax.swing.JOptionPane;
import javax.swing.Icon;
import javax.swing.ImageIcon;
?
class TestDialog{
??????
?????? publicstatic void main(String args[]){
????????????? Iconicon=new ImageIcon("grapes.gif");
????????????? Object[]possibilities = {"苹果", "橘子", "葡萄" };
????????????? intn=JOptionPane.showOptionDialog(null, "请选择你喜欢的水果","水果",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,icon,possibilities,possibilities[0]);
????????????? Strings=”你喜欢的水果是:”;
????????????? switch(n){
???????????????????? case0:
??????????????????????????? s=s+”苹果”;
??????????????????????????? break;
???????????????????? sase1:
??????????????????????????? s=s+"橘子";
??????????????????????????? break;
???????????????????? sase2:
??????????????????????????? s=s+”葡萄”;
??????????????????????????? break;
???????????????????? default:
s=”你没有选择喜欢的水果”;
????????????? }
????????????? JOptionPane.showMessageDialog(null,s,"水果",
JOptionPane.INFORMATION_MESSAGE);
????????????? System.exit(0);
?????????????
?????? }
}
?
综合应用:猜数游戏
import javax.swing.JOptionPane;
?
class TestDialog{
???public static void main(String args[]){
???????Object[] options = {"0", "1", "2","3", "4", "5", "6", "7","8", "9" };
???????int x=(int)(10*Math.random());
???????int flag=0,y;
???????String s="请选择你猜的数。";
?
???????for(int i=0;i<3;i++){
???????????????????? if(i==0)
??????????????????????????? s=s+”\n你共有三次机会。”;
???????????????????? elseif(i==1)
s=s+”\n你还有2次机会。”;
???????????????????? else
s=s+”\n你只有1次机会了。”;
y=JOptionPane.showOptionDialog(null,s,"猜数游戏",JOptionPane.QUESTION_MESSAGE,null,options, options[0]);
?
???????????if(y>x)
????????????? s=”大了!\n请选择你猜的数。”;
???????????else if(y<x)
??????????????? s=”小了!\n请选择你猜的数。”;
???????????else{
??????????????? if(i==0)
??????????????????? s="你太厉害了。";
??????????????? else if(i==1)
s="你很聪明。";
??????????????????????????? ? else
??????????????????? s=””;
???????????????JOptionPane.showMessageDialog(null,"恭喜你猜对了!"+s,
"猜数游戏",JOptionPane.INFORMATION_MESSAGE);
???????????????flag++;
??????????????? break;
???????????}
?????????
???????}
???????if(flag==0)
JOptionPane.showMessageDialog(null,"很遗憾你没有猜对!",
"猜数游戏",JOptionPane.INFORMATION_MESSAGE);
??? }
???
}
下面是程序运行的一些截屏:



?
?
学了受益匪浅 2 楼 buerjiadegaobaishu 2012-04-24 这个对话框的方法不用有头文件吗? 3 楼 lbsnm 2012-04-25 buerjiadegaobaishu 写道这个对话框的方法不用有头文件吗?