当前位置 : IT培训网 > Java开发 > Java教程 > Java编程开发之对话框

Java编程开发之对话框

时间:2016-09-02 14:54:01  来源:Java培训网  作者:IT培训网  已有:名学员访问该课程
标签(Tag):   Java编程(686)
对话框分为强制和非强制两种。强制型对话框不能中断对话过程,直至对话框结束,才让程序响应对话框以外的事件。非强制型对话框可以中断对话过程,去响应对话框以外的事件。强制型也称有模式对话框,非强制对话框也称非

原文标题:Java对话框(JDialog类和JOptionPane类),关于这方面该如何学习呢,Java对话框知识点难度如何呢,就让我们一起来学习吧。

对话框是为了人机对话过程提供交互模式的工具。应用程序通过对话框,或给用户提供信息,或从用户获得信息。对话框是一个临时窗口,可以在其中放置用于得到用户输入的控件。在Swing中,有两个对话框类,它们是JDialog类和JOptionPane类。JDialog类提供构造并管理通用对话框;JOptionPane类给一些常见的对话框提供许多便于使用的选项,例如,简单的“yes-no”对话框等。

JDialog

JDialog类作作对话框的基类。对话框与一般窗口不同,对话框依赖其他窗口,当它所依赖的窗口消失或最小化时,对话框也将消失;窗口还原时,对话框又会自动恢复。

对话框分为强制和非强制两种。强制型对话框不能中断对话过程,直至对话框结束,才让程序响应对话框以外的事件。非强制型对话框可以中断对话过程,去响应对话框以外的事件。强制型也称有模式对话框,非强制对话框也称非模式对话框。

JDialog对象也是一种容器,因此也可以给JDialog对话框指派布局管理器,对话框的默认布局为BoarderLayout布局。但组件不能直接加到对话框中,对话框也包含一个内容面板,应当把组件加到JDialog对象的内容面板中。由于对话框依赖窗口,因此要建立对话框,必须先要创建一个窗口。

JDialog类常用的构造方法有3个:

•       JDialog(),构造一个初始化不可见的非强制型对话框。

•       JDialog(JFramef,String s),构造一个初始化不可见的非强制型对话框,参数f设置对话框所依赖的窗口,参数s用于设置标题。通常先声明一个JDialog类的子类,然后创建这个子类的一个对象,就建立了一个对话框。

•       JDialog(JFrame f,String s,boolean b),构造一个标题为s,初始化不可见的对话框。参数f设置对话框所依赖的窗口,参数b决定对话框是否强制或非强制型。

JDialog类的其他常用方法有以下几个:

•       getTitle(),获取对话框的标题。

•       setTitle(String s),设置对话框的标题。

•       setModal(boolean b),设置对话框的模式。

•       setSize(),设置框的大小。

•       setVisible(boolean b),显示或隐藏对话框。

【例 11-16】小应用程序声明一个用户窗口类和对话框类,用户窗口有两个按钮和两个文本框,当点击某个按钮时,对应的对话框被激活。在对话框中输入相应信息,按对话框的确定按钮。确定按钮的监视方法,将对话框中输入的信息传送给用户窗口,并在用户窗口的相应文本框中显示选择信息。

import java.applet.*

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

class MyWindow extends JFrame implements ActionListener{

    private JButton button1,button2;

    private static int flg=0;

    private static JTextField text1,text2;

    Mywindow(String s){

        super(s);

        Container con = this.getContentPane();

        con.setLayout(new GridLayout(2,2));

        this.setSize(200,100);

        this setLocation(100,100);

        button1 = new JButton("选择水果");

        button2 = new JButton("选择食品");

        button1.addActionListener(this);

        button2.addActionListener(this);

        text1 = new JTextField(20);

        text2 = new JTextField(20);

        con.add(button1);

        con.add(button2);

        con.add(text1);

        con.add(text2);

        this.setVisible(true);

        this.pack();

    }

    public static void returnName(String s){

        if(flg ==1)

            text1.setText("选择的水果是:"+s);

        else if(flg == 2)

            text2.setText("选择的食品是:"+s);

    }

    public void actionPerformed(ActionEvent e){

        MyDialog dialog;

        if(e.getSource()==button1){

            dialog = new MyDialog(this,"水果");

            dialog.setVisible(true);

            flg =1;

        }

        else if(e.getSource()==button2){

            dialog =new MyDialog(this,"食品");

            dialog.setVisible(true);

            flg=2;

        }

    }

}

class MyDialog extends JDialog implements ActionListener{

    JLabel title;

    JTextField text;

    JButton done;

    Mydialog(JFrame F,String s){

        super(F,s,true);//模态

        Container con = this.getContentPane();

        title = new JLabel("输入"+s+"名称");

        text = new JTextField(10);

        text.setEditable(true);

        con.setLayout(new FlowLayout());

        con.setSize(200,100);

        setModal(false);

        done = new JButton("确定");

        done.addActionListener(this);

        con.setVisible(true);

        this.pack();

    }

    public void actionPerformed(ActionEvent e){

        MyWindow.returnName(text.getText());

        setVisible(false);

        dispose();

    }

}

public class Example6_6 extends Applet{

    MyWindow window;

    MyDialog dialog;

    public void init(){

        window = new MyWindow("带对话框窗口");

    }

}

上述例子创建的是强制型对话框,改为非强制型对话框就允许用户在对话过程中暂停,与程序的其他部分进行交互。这样,在界面中可以看到部分对话的效果。

将上述例子改为非强制型对话框只要作少量的改动即可。首先是将对话框构造方法中的代码“super(F,s,true);”改为 “super(F,s,false);”。

第二个变化:原来是响应确定按钮事件时,才调用方法returnName(),将对话框得到的字符串返回给程序。现在当文本框输入选择字符串结束后,就应该立即调用该方法。为此,需要对文本框的输入事件作监视,为文本注册监视器:

public void actionPerformed(ActionEvent e){

if(e.getSource()==text){

MyWindow.returnName(text.getText());

}

else if(e.getSource()==done){

MyWindow.returnName(text.getText());

setVisible(false);

dispose();//清除资源

}

}

JOptionPane

经常遇到非常简单的对话情况,为了简化常见对话框的编程,JOptionPane类定义了四个简单对话框类型,参见表11-4。JOptionPane类提供一组静态方法,让用户选用某种类型的对话框。下面的代码是选用确认对话框:

int result = JOptionPane.showConfirmDialog(parent,“确实要退出吗”, “退出确认“,JOptionPane.YES_NO_CANCEL_OPTION);

其中方法名的中间部分文字“Confirm”是创建对话框的类型,文字Confirm指明是选用确认对话框。将文字Confirm改为另外三种类型的某一个,就成为相应类型的对话框。上述代码的四个参数的意义是:第一个参数指定这个对话框的父窗口;第二个参数是对话框显示的文字;第三个参数是对话框的标题;最后一个参数指明对话框有三个按钮,分别为“是(Y)”,“否(N)”,和“撤销”。方法的返回结果是用户响应了这个对话框后的结果,参见表 11-5 给出的可能答案。

输入对话框以列表或文本框形式请求用户输入选择信息,用户可以从列表中选择选项或从文本框中输入信息。以下是一个从列表中选择运行项目的输入对话框的示意代码:

String result = (String)JOptionPane.showInputDialog(parent,

“请选择一项运动项目”, “这是运动项目选择对话框”,

JOptionPane.QUESTION_MESSAGE,null,

new Object[]{“踢足球“,“打篮球”,“跑步”,“跳绳”},“跑步”);

第四个参数是信息类型,参见11-6,第五个参数在这里没有特别的作用,总是用null;第六个参数定义了一个供选择的字符串数组,第七个参数是选择的默认值。对话框还包括“确定”和“撤销”按钮。

表11-4 JOptionPane对话框类型

输入

通过文本框、列表或其他手段输入,另有“确定”和“撤销”按钮

确认

提出一个问题,待用户确认,另有“是(Y)”、“否(N)”和“撤销”按钮

信息

显示一条简单的信息,另有“确定”和“撤销”按钮

选项

显示一列供用户选择的选项

 

 

表 11-5  由 JOptionPane 对话框返回的结果

YES_OPTION

用户按了“是(Y)”按钮

NO_OPTION

用户按了“否(N)”按钮

CANCEL_OPTION

用户按了“撤销”按钮

OK_OPTION

用户按了“确定”按钮

CLOSED_OPTION

用户没按任何按钮,关闭对话框窗口

 

 

表 11-6 JOptionPane 对话框的信息类型选项

PLAIN_MESSAGE

不包括任何图标

WARNING_MESSAGE

包括一个警告图标

QUESTION_MESSAGE

包括一个问题图标

INFORMATIN_MESSAGE

包括一个信息图标

ERROR_MESSAGE

包括一个出错图标

 

有时,程序只是简单地输出一些信息,并不要求用户有反馈。这样的对话框可用以下形式的代码创建:

    JOptionPane.showMessageDialog(parent, “这是一个Java程序”,

        “我是输出信息对话框”,JOptionPane.PLAIN_MESSAGE);

上述代码中前三参数的意义与前面所述相同,最后参数是指定信息类型为不包括任何图标,参见表11-6。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
------分隔线----------------------------
Java教程
1、Java 概述
1.1 Java语言概述
1.2 Java虚拟机以及跨平台原理
1.3 Java的主要就业方向
1.4 Java的不同版本
1.5 Java开发环境搭建
1.6 第一个Java程序示例
1.7 Java类和对象的概念
1.8 Java类库及其组织结构
1.9 Java import
2、Java 语法基础
2.1 Java数据类型以及变量的定义
2.2 Java数据类型转换
2.3 Java运算符
2.4 Java流程控制
2.5 Java数组的定义和使用
2.6 Java字符串(String)
2.7 Java StringBuffer与StringBuider
2.8 强调一下编程风格
3、Java 类与对象
3.1 Java类的定义及其实例化
3.2 Java访问修饰符
3.3 Java变量的作用域
3.4 Java this关键字详解
3.5 Java方法重载
3.6 Java类的基本运行顺序
3.7 Java包装类、拆箱和装箱详解
3.8 再谈Java包
3.9 源文件的声明规则
4、Java 继承和多态
4.1 继承的概念与实现
4.2 Java super关键字
4.3 继承中的方法的覆盖和重载
4.4 多态和动态绑定
4.5 instanceof 运算符
4.6 多态对象的类型转换
4.7 Java static关键字
4.8 Java final关键字
4.9 Java Object类
5、面向对象高级特性
5.1 Java内部类及其实例化
5.2 内部类的分类
5.3 抽象类的概念和使用
5.4 接口的概念和使用
5.5 接口和抽象类的区别
5.6 Java 泛型
5.7 泛型通配符和类型参数的范围
6、异常处理
6.1 异常处理基础
6.2 异常类型Java语言中常见的异常类型有哪些
6.3 未被捕获的异常
6.4 try和catch的使用
6.5 多重catch语句的使用
6.6 try语句的嵌套
6.7 throw:异常的抛出
6.8 throws子句
6.9 finally块
6.10 Java的内置异常
6.11 创建自己的异常子类
6.12 断言
7、线程编程
7.1 线程的概念
7.2 Java线程模型
7.3 主线程
7.4 创建线程
7.5 创建多线程
7.6 isAlive()和join()的使用
7.7 线程优先级
7.8 线程同步
7.9 线程间通信
7.10 线程死锁
7.11 线程的挂起、恢复和终止
8、输入输出(IO)操作
8.1 输入输出基本概念
8.2 面向字符的输入流
8.3 面向字符的输出流
8.4 面向字节的输入输出流
8.5 面向字节流的应用
8.6 文件与目录管理
8.7 文件的随机读写
8.8 文件的压缩处理
9、常用类库、向量与哈希
9.1 Java基础类库
9.2 Object类
9.3 Java语言包(java.lang)简介
9.4 日期和时间类
9.5 向量及其应用
9.6 哈希表及其应用
10、图形界面(GUI)设计
10.1 图形界面设计基础
10.2 框架窗口
10.3 标签、按钮和按钮事件
10.4 面板
10.5 布局设计
10.6 文本框和文本区
10.7 文本框和文本区的输入输出
10.8 选择框和单选按钮
10.9 列表和组合框
10.10 菜单
10.11 对话框
10.12 滚动条
10.13 鼠标事件
10.14 键盘事件
11、图形、图像与多媒体
11.1 绘图基础
11.2 设置字型和颜色
11.3 绘图模式
11.4 Graphics类的绘图方法
11.5 Graphics2D类的绘图方法
11.6 图像处理基础
11.7 图像缓冲技术
11.8 多媒体基础
12、网络与数据库编程
12.1 IP地址和InetAddress类
12.2 统一资源定位符
12.3 套接字(Socket)
12.4 数据库连接
12.5 几个重要的类和接口
12.6 数据库查询
12.7 数据库更新
12.8 插入记录
12.9 修改记录
12.10 删除记录