--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
提示:
一般来说,Windows应用程序中,对话框分为模态对话框和
非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。
模态对话框垄断了用户的输入。当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。模态对话框下,用户需要操作目标对话框就必须先操作模态对话框。用户对模态对话框的处理如图所示。
----------------------------------------
----------------------------------------
----------------------------------------
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,则模式类型属性被设置为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中Dialog和FileDialog的使用,通过实例代码testDialog.java详细讲解这两个类的功能和应用场景。



被折叠的 条评论
为什么被折叠?



