java学习之Dialog与FileDialog类
2016-07-18 15:03
363 查看
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
提示:
一般来说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。
模态对话框垄断了用户的输入。当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。模态对话框下,用户需要操作目标对话框就必须先操作模态对话框。用户对模态对话框的处理如图所示。
模态对话框的处理过程
非模态对话框(Nonmodal Dialogue Box,又叫做无模式对话框),与模态对话框不同,当用户打开非模态对话框时,依然可以操作其他窗口。
------------------------------------------------------------------------------------------------------------------------
Dialog
public Dialog(Dialog owner, String title)
构造一个最初不可见的、无模式的
Dialog,它带有指定的所有者
Dialog和标题。
参数:
owner- dialog 的所有者,如果此 dialog 没有所有者,则该参数为
null
title- dialog 的标题,如果此 dialog 没有标题,则该参数为
null抛出:
IllegalArgumentException- 如果
owner的
GraphicsConfiguration不是来自某一屏幕设备
HeadlessException- 当
GraphicsEnvironment.isHeadless()返回
true
Dialog
public Dialog(Dialog owner, String title, boolean modal)
构造一个最初不可见的
Dialog,它带有指定的所有者
Dialog、标题和模式。
参数:
owner- dialog 的所有者,如果此 dialog 没有所有者,则该参数为
null
title- dialog 的标题,如果此 dialog 没有标题,则该参数为
null
modal- 指定在显示的时候是否阻止用户将内容输入到其他顶级窗口中。如果该参数为
false,则 dialog 是
MODELESS;如果该参数为
true,则模式类
af62
型属性被设置为
DEFAULT_MODALITY_TYPE
抛出:
IllegalArgumentException- 如果
owner的
GraphicsConfiguration不是来自某一屏幕设备
HeadlessException- 当
GraphicsEnvironment.isHeadless()返回
true时
________________________________________________________________________——————————————————————————
(1)testDialog.java
package testDialog;
import java.awt.*;
import java.awt.event.*;
public class testDialog extends Frame {
private TextField tf=new TextField(10);
public testDialog()
{
Button b1=new Button("打开模态对话框!");
Button b2=new Button("打开非模态对话框!");
//增加到容器上
add(tf,"North");
add(b1,"Center");
add(b2,"East");
//打开模态对话框
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
/**
* 不能用new testdialog(),导致两个对象
* 也不能用this,this指的是调用方法的对象,即【new ActionListener()】
*/
MyDialog dlg=new MyDialog(testDialog.this,"模式对话框!",true);
dlg.setInfo(tf.getText());
dlg.setVisible(true);
tf.setText(dlg.getInfo());
}
}
);
//打开非模态对话框
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
/**
* 不能用new testdialog(),导致两个对象
* 也不能用this,this指的是调用方法的对象,即【new ActionListener()】
*/
MyDialog dlg=new MyDialog(testDialog.this,"模式对话框!",false);
dlg.setInfo(tf.getText());
dlg.setVisible(true);
//tf.setText(dlg.getinfo());
}
}
);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
});
}
public void setInfo(String info)
{
tf.setText(info);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
testDialog dw=new testDialog();
dw.setSize(400, 300);
dw.setTitle("DrawLine");
dw.setVisible(true);
}
}
(2).MyDialog.java
package testDialog;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyDialog extends Dialog{
private TextField tf=new TextField(10);
private String str=null;
public MyDialog(Frame owner, String title, boolean modal)
{
super(owner, title, modal);
setBounds(0,0,200,150);
Button b1=new Button("应用");
Button b2=new Button("确定");
add(tf,"North");
add(b1,"Center");
add(b2,"East");
if(this.isModal()==true)
{
b1.setEnabled(false);
}
b1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
((testDialog)MyDialog.this.getOwner()).setInfo(tf.getText());
}
});
//确定按钮的功能
b2.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if(isModal()==true)
{
str=new String(tf.getText());
}
else
{
((testDialog)MyDialog.this.getOwner()).setInfo(tf.getText());
}
dispose();
}
});
}
public String getInfo()
{
return str;
}
public void setInfo(String strInfo)
{
tf.setText(strInfo);
}
}
__________________________________________________________________________________________
自《张孝祥java就业教程》
相关文章推荐
- 【奔跑的菜鸟】Java中的多态
- Java IO
- Eclipse中运行MapReduce程序控制台无调试信息-log4j
- java开发环境搭建
- Eclipse快捷键
- Maven(二)——eclipse使用Maven创建(Java和Android)项目
- 在JSP中使用JavaBean
- JavaBean
- JAVA操作properties文件
- java项目导入与导出
- Java配置及软件下载
- Java中获取明天或者昨天的日期的方法
- java学习之container
- 命令行运行java程序*.jar包
- java实现将结果集封装到List中的方法
- spring TaskExecutor
- Eclipse 工程迁移到 Android Studio
- Java日历类Calendar
- Eclipse运行时概述一
- The Event-Dispatching Thread