awt的文件对话框
Dialog类中还有一个子类:FileDialog,它代表一个文件对话框,用于打开或者保存文件,需要注意的是FileDialog无法指定模态还是非模态,这是因为FileDialog依赖于运行平台的实现,如果运行平台的为文件对话框是模态的,那么FileDialog也是模态的;否则就是非模态的
其中parent是指定父窗口,title是对话框标题,mode:文件对话框类型,如果指定为FileDialog.LOAD,用于打开文件,如果指定为FileDialog.SAVE,用于保存文件
方法 | 作用 |
---|---|
FileDialog(Frame parent,String title.int mode) | 创建一个文件对话框 |
String getDirectory() | 获取被打开或保存文件的绝对路径 |
String getFile() | 获取被打开或保存文件的文件名 |
awt的文件对话框_练习
package ch29;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//fileDialog是上节课学的Dialog对话框的子类,fileDialog文件对话框是用来操作文件的
public class a_4_3awt_文件对话框 {
public static void main(String[] args) {
Frame frame = new Frame();
//1、创建两个FileDialog对象,注意文件对话框FileDialog需要三个参数
FileDialog fileDialog1 = new FileDialog(frame, "选择要打开的文件", FileDialog.LOAD);
FileDialog fileDialog2 = new FileDialog(frame, "选择要保存的文件", FileDialog.SAVE);
//2、创建两个按钮
Button b1 = new Button("打开文件");
Button b2 = new Button("保存文件");
//3、给这两个按钮设置点击后的行为:获取打开或者保存的路径文件名
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileDialog1.setVisible(true);//代码会阻塞到这里。即当用户正在选择文件时,是不会执行下面代码的
//获取用户选择好的文件的路径名及文件名
String directory = fileDialog1.getDirectory();//获取路径
String file = fileDialog1.getFile();//获取文件
System.out.println("打开的文件路径为:" + directory);
System.out.println("打开的文件名称为:" + file);
}
});
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fileDialog2.setVisible(true);
//获取选择的路径及文件
String directory = fileDialog2.getDirectory();
String file = fileDialog2.getFile();
System.out.println("打开的文件路径为:" + directory);
System.out.println("打开的文件名称为:" + file);
}
});
//给Frame设置WindowListener监听器,监听用户点击右上角X的动作,则关闭窗口
frame.addWindowListener(new WindowAdapter() {
//采用Java通过的适配器设计模式,我们只需要重写自己需要的方法,例如windowClosing方法,如下
public void windowClosing(WindowEvent e) {
System.exit(0);//原理:退出JVM虚拟机,即退出当前运行的Java程序
}
});
//4、把按钮添加到Frame中
frame.add(b1, BorderLayout.NORTH);
frame.add(b2);
frame.pack();
frame.setVisible(true);
}
//为什么按钮里面的文字出现乱码:idea编码是UTF-8,生成的按钮是由当前win11操作系统创建的,而当前系统的默认编码是中文GBK编码,不一致就会出现乱码
//解决:让编码和解码一致
//具体解决:在idea软件的上方中间靠右一些有一个绿色锤子图标,点击锤子图标右边的输入框,点击下拉的Edit Configurations...,点击弹出来的
//选项卡的Modify options绿色字体,找到Add VM options并勾选,将'-Dfile.encoding=gbk'输入到刚才Modify options蓝色字体的
//下方的三条输入框中的最上面那条输入框里面
}