swing的JOptionPane组件
JOptionPane基本概述
通过JOptionPane可以非常方便地创建一些简单的对话框,Swing已经为这些对话框添加了相应的组件,无须程序员手动添加组件。 JOptionPane提供了如下4个方法来创建对话框:
方法 | 作用 |
---|---|
showMessageDialog/showInternalMessageDialog | 消息对话框,告知用户某事己发生,用户只能单击"确定"按钮,类似于JavaScript的alert函数 |
showConfirmDialog/showInternalConfirmDialog | 确认对话框,向用户确认某个问题,用户可以选择yes、 no ~ cancel等选项,类似于JavaScript的comfirm函数。该方法返回用户单击了哪个按钮 |
showInputDialog/showInternalInputDialog | 输入对话框,提示要求输入某些信息,类似于JavaScript的prompt函数。该方法返回用户输入的字符串 |
showOptionDialog/showInternalOptionDialog | 自定义选项对话框,允许使用自定义选项,可以取代showConfirmDialog所产生的对话框,只是用起来更复杂 |
上述方法都有都有很多重载形式,选择其中一种最全的形式,参数解释如下:
xxxxxxxxxx
showXxxDialog(Component parentComponent,
Object message,
String title,
int optionType,
int messageType,
Icon icon,
Object[] options,
Object initialValue
)
参数解释: parentComponent:当前对话框的父组件 message:对话框上显示的信息,信息可以是字符串、组件、图片等 title:当前对话框的标题 optionType:当前对话框上显示的按钮类型:DEFAULT_OPTION、YES_NO_OPTION、YES_NO_CANCEL_OPTION、OK_CANCEL_OPTION messageType:当前对话框的类型:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE、PLAIN_MESSAGE icon:当前对话框左上角的图标 options:自定义下拉列表的选项 initialValue:自定义选项中的默认选中项
当用户与对话框交互结束后,不同类型对话框的返回值如下:
1、showMessageDialog:无返回值 2、showlnputDialog:返回用户输入或选择的字符串 3、showConfirmDialog:返回一个整数代表用户选择的选项 4、showOptionDialog:返回一个整数代表用户选择的选项,如果用户选择第一项,则返回0;如果选择第二项,则返回1……依此类推
对showConfirmDialog所产生的对话框,有如下几个返回值:
1、YES_OPTION:用户单击了"是"按钮后返回 2、NO_OPTION:用户单击了"否"按钮后返回 3、CANCEL_OPTION:用户单击了"取消"按钮后返回 4、OK_OPTION :用户单击了"确定"按钮后返回 5、CLOSED_OPTION:用户单击了对话框右上角的叉叉图标"x" 按钮后返回
swing的JOptionPane组件_消息对话框的练习
x
package ch30;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class a_10_0swing_基本组件_JOptionPane {
//窗口对象
JFrame jf = new JFrame("测试消息对话框");
//文本域
JTextArea jta = new JTextArea(6, 30);
//窗口最底部的按钮
JButton btn = new JButton(new AbstractAction("弹出消息对话框") {
//按钮点击后的行为,要求弹出一个消息对话框,并且显示文本域中输入的内容
//showMessageDialog的第一个参数是父窗口,第二个参数是弹出的对话框的显示内容,第三个参数是当前对话框的标题,第四个参数是对话框的类型
public void actionPerformed(ActionEvent e) {//下面是五种不同的对话框类型,每次只能解开注释一个
///JOptionPane.showMessageDialog(jf, jta.getText(), "消息对话框", JOptionPane.ERROR_MESSAGE);//错误对话框
//JOptionPane.showMessageDialog(jf, jta.getText(), "消息对话框", JOptionPane.INFORMATION_MESSAGE);//提示对话框
//JOptionPane.showMessageDialog(jf, jta.getText(), "消息对话框", JOptionPane.WARNING_MESSAGE);//警告对话框
//JOptionPane.showMessageDialog(jf, jta.getText(), "消息对话框", JOptionPane.QUESTION_MESSAGE);//问题对话框
//JOptionPane.showMessageDialog(jf, jta.getText(), "消息对话框", JOptionPane.PLAIN_MESSAGE);//基本对话框
//如何自定义四对话框前面显示的图标,只需要在后面继续传一个Icon参数,图标就变成你的图标了
JOptionPane.showMessageDialog(jf, jta.getText(), "消息对话框", JOptionPane.WARNING_MESSAGE, new ImageIcon("src\\img\\next.png"));
}
});
//上面的jf, jta.getText()是拿到文本域中输入的内容
//上面的对话框类型分为:错误消息、提示消息、警告消息、问题消息、基本消息
//组装视图
public void init(){
//文本域放到窗口的中间,不写参数就默认是中间区域
jf.add(jta);
//按钮放到窗口的底部
jf.add(btn, BorderLayout.SOUTH);
//设置窗口的最佳大小,设置窗口可见,设置点击叉号就退出程序
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new a_10_0swing_基本组件_JOptionPane().init();
}
}
swing的JOptionPane组件_确认对话框的练习
xxxxxxxxxx
package ch30;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class a_11_0swing_基本组件_JOptionPane_确认对话框 {
JFrame jf = new JFrame("测试确认对话框");
JTextArea jta = new JTextArea(6, 30);
JButton btn = new JButton(new AbstractAction("弹出确认对话框") {
public void actionPerformed(ActionEvent e) {
//获取文本域的内容
String text = jta.getText();
//下面有几种不同的按钮组合,只使用一种即可,剩下的注释掉
//int result = JOptionPane.showConfirmDialog(jf,text,"确认对话框",JOptionPane.DEFAULT_OPTION);//确定
//int result = JOptionPane.showConfirmDialog(jf,text,"确认对话框",JOptionPane.YES_NO_OPTION);//是,否
//int result = JOptionPane.showConfirmDialog(jf,text,"确认对话框",JOptionPane.YES_NO_CANCEL_OPTION);//是,否,取消
int result = JOptionPane.showConfirmDialog(jf,text,"确认对话框",JOptionPane.OK_CANCEL_OPTION);//确定,取消
//还要判断用户点击了哪个按钮,即判断result值。判断的我只写了两个,还有其他的判断可自己写上
if (result==JOptionPane.CANCEL_OPTION){
jta.append("\n用户点击了"+" 取消 "+"按钮");
}
if (result==JOptionPane.OK_OPTION){
jta.append("\n用户点击了"+" 确定 "+"按钮");
}
}
});
public void init(){
//把文本域放到窗口的中间区域
jf.add(jta);
//把按钮放到窗口的南部区域
jf.add(btn, BorderLayout.SOUTH);
//设置窗口的最佳大小,设置窗口可见,设置点击叉号就退出程序
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new a_11_0swing_基本组件_JOptionPane_确认对话框().init();
}
}
swing的JOptionPane组件_输入对话框的练习
xxxxxxxxxx
package ch30;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class a_12_0swing_基本组件_JOptionPane_输入对话框 {
//创建窗口
JFrame jf = new JFrame("测试输入对话框");
//创建文本域
JTextArea jta = new JTextArea(6, 30);
JButton btn = new JButton(new AbstractAction("弹出输入对话框") {
//弹出输入对话框
public void actionPerformed(ActionEvent e) {
//对话框showInputDialog的参数:父窗口、对话框的提示信息、对话框的标题、当前消息对话框的消息类型
//用户输入之前会一直堵塞在下面那行,不会继续往下执行程序
/*String result = JOptionPane.showInputDialog(jf, "请填写您的银行账号:", "输入对话框", JOptionPane.INFORMATION_MESSAGE);
jta.append(result);//把用户输入的信息放到文本域*/
//上面的信息来源是用户输入,下面的代码的信息来源是我们给用户的一些选项信息
Object result = JOptionPane.showInputDialog(jf, "", "输入对话框", JOptionPane.DEFAULT_OPTION, null, new String[]{"张三", "李四", "王五"}, "张三");
jta.append(result.toString());
}
});
public void init(){
jf.add(jta);
jf.add(btn, BorderLayout.SOUTH);
//设置窗口的最佳大小,设置窗口可见,设置点击叉号就退出程序
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new a_12_0swing_基本组件_JOptionPane_输入对话框().init();
}
}
swing的JOptionPane组件_选项对话框的练习
xxxxxxxxxx
package ch30;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class a_13_0swing_基本组件_JOptionPane_选项对话框 {
//创建窗口
JFrame jf = new JFrame("测试选项对话框");
//创建文本域
JTextArea jta = new JTextArea(6, 30);
JButton btn = new JButton(new AbstractAction("弹出选项对话框") {
//按钮点击后的行为
public void actionPerformed(ActionEvent e) {
//showOptionDialog方法会返回一个整型值,如果用户选择了第一项,那么返回0,如果选的是第二项,那么返回1,依次同理
//第一个参数:父组件、对话框的提示信息、对话框的标题、按钮的类型、对话框的提示类型、图标(没有则写null)、选项的具体内容、选项的默认值
int result = JOptionPane.showOptionDialog(jf, "请选择当前时间:", "选项对话框",JOptionPane.DEFAULT_OPTION,JOptionPane.INFORMATION_MESSAGE,
null,new String[]{"早上","中午","晚上"},"早上");
//上面用户点击了某个选项按钮,该按钮就会返回一个整型值,我们通过这个整型值判断用户点击了哪个选项按钮
switch (result){
case 0:
//把某个内容传到文本域
jta.setText("用户选择了早上");
break;//加上break,避免case穿透
case 1:
jta.setText("用户选择了中午");
break;
case 2:
jta.setText("用户选择了晚上-");
break;
}
}
});
public void init(){
jf.add(jta);
jf.add(btn, BorderLayout.SOUTH);
//设置窗口的最佳大小,设置窗口可见,设置点击叉号就退出程序
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new a_13_0swing_基本组件_JOptionPane_选项对话框().init();
}
}