您的位置:首页 > 编程语言 > Java开发

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就业教程》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: