- 相关推荐
Java对话框学习教程
引导语:从本质上讲,对话框时一种特殊的窗体,以下是百分网小编分享给大家的Java对话框学习教程,希望大家喜欢!

1.1 对话框
但有时候我们需要弹出独立的对话框以显示信息或者从用户收集信息。对话框,顾名思义,就是向用户显示信息并获取程序继续运行所需数据的窗口,可以起到与用户交互的作用。从本质上讲,对话框时一种特殊的窗体,它通过一个或多个组件与用户交互。与JFrame一样,对话框有边框、有标题且独立存在的容器,并且不能被其他容器所包容,但是对话框不能作为程序的最外层容器,也不能保护菜单栏。此外,java中的对话框上没有最大、最小化按钮。
1.1.1 JOptionPane 选项对话框
JOptionPane提供了许多对话框样式,该类能够让你在不编写任何专门对话框代码的情况下弹出一个简单的对话框。
JOptionPane类提供了7个构造方法用于创建JOptionPane的类对象,不过在实际使用时,
通常不是用new方式创建,而是使用JOptionPane类提供的一些静态方法产生。JOptionPane有四个静态方法来显示这些简单对话框:
(1)showMessageDialog:提示信息对话框,这种对话框通常只含有一个“确定”按钮。
(2)showConfirmDialog :确认对话框,这类对话框通常会询问用户一个问题,要求用户做YES/NO的回答。
(3)showOptionDialog:选择对话框,这类对话框可以让用户自己定义对话框的类型。
(4)showInputDialog:输入对话框,这类对话框可以让用户输入相关的信息,当用户完成输入并按下确定按钮后,系统会得到用户所输入的信息。
对于每种形式的对话框都有多个静态重载方法,下面分别予以说明。
1. Message Dialog
Message Dialog称为提示信息对话框,这种对话框中通常只含有一个“确定”按钮。可以使用showMessage Dialog静态方法来显示一个Message Dialog,showMessageDialog方法具有如下重载形式。
·showMessageDialog(Component parentComponent, Object message)
·showMessageDialog(Component parentComponent, Object message, String title, int messageType)
·showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)
各参数的含义如下:
parentComponent - 确定在其中显示对话框的 Frame;如果为 null 或者其不具有 Frame,则使用默认的 Frame
message - 要显示的 Object
title - 对话框的标题字符串
messageType - 要显示的消息类型,int枚举类型:ERROR_MESSAGE、INFORMATION_MESSAGE、WARNING_MESSAGE、QUESTION_MESSAGE 或 PLAIN_MESSAGE,这5个值都是JOptionPane的静态数据成员,可直接使用JOptionPane加“.”的方式使用,5个消息类型的显示效果如下表
icon - 要在对话框中显示的图标,该图标是用户自定义的图标,如果显示该图标,则不会再显示messageType指定的消息类型的系统图标。一般不需要使用,除非用户有特定需求。
showMessageDialog方法无返回值,Message Dialog只是告知用户某些信息,用户除了点击确定按钮外不能与其进行交互。
对应语句:
JOptionPane.showMessageDialog(null, "这是一个消息对话框吗?","对话框title",JOptionPane.QUESTION_MESSAGE,null);
2.ConfirmDialog
Confirm Dialog称为确认对话框,这类对话框通常会询问用户一个问题,要求用户作出YES/NO的回答。可以使用showConfirmDialog静态方法来显示一个Confirm Dialog,showConfirmDialog方法具有如下重载形式。
showConfirmDialog(Component parentComponent, Object message)
showConfirmDialog(Component parentComponent, Object message, String title, int optionType)
showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType)
showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon)
showConfirmDialog方法中有1个参数,其中5个与showMessageDialog的参数相同,含义也一样,这里不再重复说明,showConfirmDialog方法中新增一个参数optionType,该参数的含义如下:
optionType—指定可用于对话框的选项的 int:YES_NO_OPTION、YES_NO_CANCEL_OPTION 或 OK_CANCEL_OPTION,具体的显示效果见下表
showConfirmDialog的返回值为int类型。其中YES,OK=0;NO=1;CANCEL=2;CLOSED=-1(用户直接点击关闭按钮关闭对话框)。通过对返回值的判断,可以做到与用户之间的交互(如用户是按下了确定按钮 还是取消按钮,根据按下按钮的不同做不同的处理)
对应语句:JOptionPane.showConfirmDialog(null, "你确认这是一个确认对话框吗?","对话框title",JOptionPane.YES_NO_OPTION);
3.Input Dialog
Input Dialog称为输入对话框,这类对话框可以让用户输入相关的信息,当用户完成输入并按下确定按钮后,系统会得到用户所输入的信息。输入对话框不见可以让用户自行输入数据,也可以提供ComboBox组件让用户选择相关信息,避免用户输入错误。可以使用showInputDialog静态方法来显示一个Input Dialog,showInputDialog方法具有如下重载形式。
showInputDialog(Object message)
showInputDialog(Object message, Object initialSelectionValue)
showInputDialog(Component parentComponent, Object message)
showInputDialog(Component parentComponent,Object message, Object initialSelectionValue)
showInputDialog(Component parentComponent, Object message, String title, int messageType)
showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue)
showInputDialog方法中有7个参数,其中5个与showMessageDialog的参数相同,含义也一样,这里不再重复说明,showInputDialog方法中新增两个参数,selectionValues 和initialSelectionValue,含义如下:
selectionValues—用户可能的选择值,以数组方式赋值,显示形式为ComboBox。
initialSelectionValue—对话框初始化时输入框中的显示值。
showInputDialog方法的返回值有两种:String类型和Object类型,当用户按下确定按钮时会返回用户输入(或选择)的信息,若按下取消按钮则会返回null。
对应语句:
JOptionPane.showInputDialog(null ,"请选择城市:","对话框title", JOptionPane.INFORMATION_MESSAGE,null,new String[]{"北京","上海","广州","天津 "},"北京");
4.Option Dialog
Option Dialog称为选择对话框,这类对话框可以让用户自己定义对话框的类型。它可以根据需要改变按钮上的文字,而不是系统默认的“确定”、“取消”、“是”、“否”等。可以使用showOptionDialog静态方法来显示一个Option Dialog,该静态方法无重载方法,具体形式如下:
showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue)
该方法提供了1个参数,其中7个参数与showInputDialog的参数完全相同,不再重复说明,新增一个参数options,其含义如下:
options—按钮上的文字,系统会根据options的长度n创建n个按钮。
showOptionDialog的返回值类型为int,当点击由options数组确定的按钮时,其值为options数组的下标值,当点击关闭按钮时其值为-1。
对应语句:
JOptionPane.showOptionDialog(null, "选项对话框", "对话框title", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null,new String[]{"自定义1","自定义2","自定义3"},"自定义1");
当点击“自定义1”按钮时,返回值为0,“自定义2”按钮时,返回值为1,“自定义2”按钮时,返回值为2,点击取消按钮时返回值为-1
下面的例子综合了JOptionPane的四种按钮,并对各个按钮的单击事件做了处理。
[例1-11]
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class JOptionPaneTest extends JFrame{
private JButton btn1 = new JButton("消息对话框");
private JButton btn2 = new JButton("确认对话框");
private JButton btn3 = new JButton("输入对话框");
private JButton btn4 = new JButton("选项对话框");
public JOptionPaneTest(String title){
super(title);
Container contentPane = this.getContentPane();
contentPane.setLayout(new FlowLayout(5));
//添加按钮
contentPane.add(btn1);
contentPane.add(btn2);
contentPane.add(btn3);
contentPane.add(btn4);
pack();
setVisible(true);
//注册偷听
btn1.addActionListener(new MyActionListener());
btn2.addActionListener(new MyActionListener());
btn3.addActionListener(new MyActionListener());
btn4.addActionListener(new MyActionListener());
}
//偷听
private class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
int n;//用于接收对话框的int类型返回值
String str = new String();//用于接收对话框的String类型返回值
//处理"消息对话框"按钮
if(e.getActionCommand().equals("消息对话框")){
//显示一个MessageDialog
JOptionPane.showMessageDialog(null, "这是一个消息对话框吗?");
}
if(e.getActionCommand().equals("确认对话框")){
//显示一个ConfirmDialog,并用变量n接收其返回值
n=JOptionPane.showConfirmDialog(null, "你确认这是一个确认对话框吗?","对话框title",JOptionPane.YES_NO_OPTION);
//判断用户点击了哪个按钮
switch(n){
case 0:
JOptionPane.showMessageDialog(null, "您点击了按钮——是");
break;
case 1:
JOptionPane.showMessageDialog(null, "您点击了按钮——否");
break;
case -1:
JOptionPane.showMessageDialog(null, "您点击了退出按钮");
break;
}
}
if(e.getActionCommand().equals("输入对话框")){
//显示一个InputDialog,并用变量str接收其返回值
str =(String)JOptionPane.showInputDialog(null ,"请选择城市:","对话框title",JOptionPane.INFORMATION_MESSAGE,null,new String[]{"北京","上海","广州"},"北京");
//判断用户选择了ComboBox的哪项
if(str != null){
JOptionPane.showMessageDialog(null, "您选择了"+str);
}
}
if(e.getActionCommand().equals("选项对话框")){
//显示一个OptionDialog,并用变量n接收其返回值
n = JOptionPane.showOptionDialog(null, "选项对话框", "对话框title", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null,new String[]{"自定义1","自定义2","自定义3"},"自定义1");
//判断用户点击了 哪个按钮
switch(n){
case 0:
JOptionPane.showMessageDialog(null, "您点击了按钮——自定义1");
break;
case 1:
JOptionPane.showMessageDialog(null, "您点击了按钮——自定义2");
break;
case 2:
JOptionPane.showMessageDialog(null, "您点击了按钮——自定义3");
break;
case -1:
JOptionPane.showMessageDialog(null, "您点击了退出按钮");
break;
}
}
}
}
}
public class Test1_11 {
public static void main(String[] args) {
new JOptionPaneTest("JOptionPane四种对话框形式测试");
}
}
该程序是对四种按钮的各个单击事件进行处理,所以运行结果较多,这里不再一一列举,请读者自行运行程序查看结果。
1.1.2 JFileChooser 文件对话框
JFileChooser表示文件对话框,常用来弹出“打开”、“保存”后其他自定标题的文件对话框,并可爱对话框中进行文件选择。
JFileChooser类提供了1个构造方法用于创建JFileChooser类对象,常用的有3个,详见下表。
表1-11 JFileChooser常用构造方法
构造方法说明
JFileChooser()构造一个指向用户默认目录的 JFileChooser。
JFileChooser(String currentDirectoryPath)构造一个使用给定路径的 JFileChooser。
JFileChooser(File currentDirectory)使用给定的 File 作为路径来构造一个 JFileChooser
此默认目录取决于操作系统。在 Windows 上通常是“我的文档”,在 Unix 上是用户的主目录。
无参构造方法创建的JFileChooser类对象,其默认目录默认目录取决于操作系统。在 Windows 上通常是“我的文档”,在 Unix 上是用户的主目录。
另外两个构造方法,虽然传递参数的类型不同,但均指某个目录。若参数传递时传入“null”,则相当于使用“JFileChooser()”创建JFileChooser类对象。
JFileChooser类中常用方法如下表。
表1-17 JFileChooser常用方法
成员方法说明
int showOpenDialog(Component parent)弹出一个 "Open File" 文件选择器对话框
int showSaveDialog(Component parent)
弹出一个 "Save File" 文件选择器对话框
showDialog(Component parent,
String approveButtonText)
弹出具有自定义 approve 按钮的自定义文件选择器对话框
File getSelectedFile()返回选中的文件
对于showOpenDialog等显示对话框的方法将返回一个整数,可能取值情况是:
JFileChooser.CANCEL_OPTION —按取消键退出对话框,无文件选取
JFileChooser.APPROVE_OPTION —正常选取文件
JFileChooser.ERROR_OPTION —发生错误或者该对话框已被解除而退出对话框
所以在文件选取对话框交互结束后,应进行判断,是否从对话框中选取了文件,然后根据返回值情况进行处理。
例1-12演示了JFileChooser类的showOpenDialog方法的使用,JFileChooser一般用于可视化的文件读取及保存,本例只是将读取的文件名显示出来,对于进一步的文件读取及保存工作读者可在学习了I/O流后完善本实例。
[例1-12]
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class JFileChooserTest extends JFrame{
private JLabel label = new JLabel("所选文件路径:");
private JTextField tfFileName = new JTextField(25);
private JButton btnOpen = new JButton("浏览");
public JFileChooserTest(String title){
super(title);
Container contentPane = this.getContentPane();
contentPane.setLayout(new FlowLayout(5));
contentPane.add(label);
contentPane.add(tfFileName);
contentPane.add(btnOpen);
pack();
setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//监听btnOpen按钮
btnOpen.addActionListener(new MyActionListener());
}
//Action事件处理
private class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
JFileChooser fc = new JFileChooser("D:javaPro");
int val = fc.showOpenDialog(null);//文件打开对话框
if(val==fc.APPROVE_OPTION){//正常选择文件
tfFileName.setText(fc.getSelectedFile().toString());
}
else{//未正常选择文件,如选择取消按钮
tfFileName.setText("未选取文件");
}
}
}
}
public class Test1_12 {
public static void main(String[] args) {
new JFileChooserTest("JFileChooser测试");
}
}
程序运行结果。
【Java对话框学习教程】相关文章:
使用Java编写GUI对话框教程讲解04-30
Java的特点学习教程01-22
Java数组的基础学习教程08-12
Java数组的基本学习教程03-01
设置Java对话框字体的方法06-23
如何设置Java对话框字体05-05
java教程之Java编程基础04-18
java计算器综合实例学习教程01-21
Java菜单和工具栏学习教程07-26