java学习之Dialog与FileDialog类


java学习之Dialog与FileDialog类_第1张图片

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

提示:
一般来说,Windows应用程序中,对话框分为模态对话框和 非模态对话框两种。二者的区别在于当对话框打开时,是否允许用户进行其他对象的操作。
模态对话框垄断了用户的输入。当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。模态对话框下,用户需要操作目标对话框就必须先操作模态对话框。用户对模态对话框的处理如图所示。
java学习之Dialog与FileDialog类_第2张图片 模态对话框的处理过程
非模态对话框(Nonmodal Dialogue Box,又叫做 无模式对话框),与模态对话框不同,当用户打开非模态对话框时,依然可以操作其他窗口。
---------------------------------------- ---------------------------------------- ----------------------------------------

Dialog

public Dialog(Dialog owner, String title)
构造一个最初不可见的、无模式的 Dialog,它带有指定的所有者 Dialog 和标题。

参数:
owner - dialog 的所有者,如果此 dialog 没有所有者,则该参数为 null
title - dialog 的标题,如果此 dialog 没有标题,则该参数为 null
抛出:
IllegalArgumentException - 如果 ownerGraphicsConfiguration 不是来自某一屏幕设备
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 - 如果 ownerGraphicsConfiguration 不是来自某一屏幕设备
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学习)