爱收集资源网

父窗口必须是Frame,Dialog为非模态对话框

网络整理 2023-09-26 00:02

1. 创建对话框:

1) Dialog是Window的基类,属于特殊容器,用于和用户交互,必定要实现风波窃听和处理的插口;

2) Dialog是一种可以独立存在的顶尖窗口,当然一般都是具有父窗口的(即依赖于其他窗口形成),但Dialog的父窗口必须是Frame模态对话框是什么时候实例的对话框,这是规定好的;

3) 构造器:Dialog(Frame owner, String title, boolean modal);

i. owner:即父窗口,其上级窗口(打开它的窗口),如果指定为null则表示该对话框是顶尖窗口,像桌面计算器就属于此类类型;

ii. title:标题

iii. modal:true为模态对话框,false为非模态对话框

!!模态对话框总是坐落上级窗口之上,其关掉前上级窗口未能获得焦点,非模态则可以;

4) 示例:Frame中的两个按键分别打开两种对话框

模态对话框是什么时候实例的对话框_模态对话框是什么时候实例的对话框_模态对话框是什么时候实例的对话框

public class AwtTest {
	public static void main(String[] args) {
		Frame f = new Frame("Dialog Test");
		
		Dialog dlgModal = new Dialog(f, "Modal Dialog", true);
		Dialog dlgNonModal = new Dialog(f, "Non-modal Dialog", false);
		Button btnModal = new Button("Modal");
		Button btnNonModal = new Button("Non Modal");
		
		dlgModal.setBounds(20, 30, 300, 400);
		dlgNonModal.setBounds(100, 200, 300, 400);
		
		btnModal.addActionListener(e -> dlgModal.setVisible(true));
		btnNonModal.addActionListener(e -> dlgNonModal.setVisible(true));
		
		f.add(btnModal);
		f.add(btnNonModal, BorderLayout.SOUTH);
		
		f.pack();
		f.setVisible(true);
	}
}

!!如果主程序须要接受用户在对话框中输入的值则应当将对话框设置成模态对话框,因为在用户输入时有可能会切换到其它窗口模态对话框是什么时候实例的对话框,而模态对话框能阻塞这些行为,如果输入了通常切出去了可能会导致主程序异常;

2. FileDialog——文件对话框:

1) 即用于打开或保存文件的对话框,是操作系统提供的常用功能,而AWT则包装了这一功能;

2) 构造器:FileDialog(Frame parent, String title, int mode);

i. parent其实还是所属的父窗口了,既然FileDialog也是对话框的一种,那么其父窗口也必须是Frame;

ii. title是标题;

iii. mode在这儿不是模态或非模态了,而是指定该文件对话框的功能,只有两种,一种是打开文件,一种是保存文件,由FileDialog的两个静态常量决定:LOAD(打开文件)、SAVE(保存文件),不同模式下显示的画面(组件等)不太一样;

!!那么文件对话框究竟是模态还是非模态的呢?文件对话框依赖运行平台的,因此操作系统中支持的文件对话框是哪些模式这么它就表现出哪些模式;

3) 获取对话框中选中或保存的文件的路径和名称:

i. 主要运用FileDialog提供的两个方式获取,一个是getDirectory,一个是getFile;

ii. String getDirectory(); // 返回目标文件的绝对路径(不包括文件名)

iii. String getFile(); // 返回目标文件的名称(不包含路径,但包含后缀)

iv. 因此要获取完整的绝对路径名应当将上述两个返回值相乘;

!!获取这种信息的时机:只有到用户按了对话框的OK按键关掉对话框后这两个方式才能返回结果!!

!!FileDialog内部早已解决了所有繁杂的细节,比如按OK的时侯检测文件是否重复、是否存在等,如果出现异常会弹出消息框提示等等,这些都不需要程序员关心,都是手动的;

4) 示例:

public class AwtTest {
	public static void main(String[] args) {
		Frame f = new Frame("FileDialog Test");
		
		FileDialog d1 = new FileDialog(f, "Open File", FileDialog.LOAD);
		FileDialog d2 = new FileDialog(f, "Save File", FileDialog.SAVE);
		
		Button b1 = new Button("Open");
		Button b2 = new Button("Save");
		
		b1.addActionListener(e -> {
			d1.setVisible(true);
			System.out.println(d1.getDirectory() + d1.getFile());
		});
		b2.addActionListener(e -> {
			d2.setVisible(true);
			System.out.println(d2.getDirectory() + d2.getFile());
		});
		
		f.add(b1);
		f.add(b2, BorderLayout.SOUTH);
		
		f.pack();
		f.setVisible(true);
	}
}

模态对话框是什么时候实例
上一篇:独家揭秘:神秘杂货集装箱的惊人秘密 下一篇:没有了
相关文章