8.6.2 JFileChooser 文件对话框
JFileChooser表示文件对话框,常用来弹出“打开”、“保存”后其他自定标题的文件对话框,并可爱对话框中进行文件选择。
JFileChooser类提供了6个构造方法用于创建JFileChooser类对象,常用的有3个,详见下表。
表8-16 JFileChooser常用构造方法
构造方法
说明
JFileChooser()
构造一个指向用户默认目录的 JFileChooser。
JFileChooser(String currentDirectoryPath)
构造一个使用给定路径的 JFileChooser。
JFileChooser(File currentDirectory)
使用给定的 File 作为路径来构造一个 JFileChooser
此默认目录取决于操作系统。在 Windows 上通常是“我的文档”,在 Unix 上是用户的主目录。
无参构造方法创建的JFileChooser类对象,其默认目录默认目录取决于操作系统。在 Windows 上通常是“我的文档”,在 Unix 上是用户的主目录。
另外两个构造方法,虽然传递参数的类型不同,但均指某个目录。若参数传递时传入“null”,则相当于使用“JFileChooser()”创建JFileChooser类对象。
JFileChooser类中常用方法如下表。
表8-17 JFileChooser常用方法
成员方法
说明
int showOpenDialog(Component parent)
弹出一个 "Open File" 文件选择器对话框
int showSaveDialog(Component parent) 弹出一个 "Save File" 文件选择器对话框
showDialog(Component parent, String approveButtonText) 弹出具有自定义 approve 按钮的自定义文件选择器对话框
File getSelectedFile()
返回选中的文件
对于showOpenDialog等显示对话框的方法将返回一个整数,可能取值情况是:
JFileChooser.CANCEL_OPTION —按取消键退出对话框,无文件选取
JFileChooser.APPROVE_OPTION —正常选取文件
JFileChooser.ERROR_OPTION —发生错误或者该对话框已被解除而退出对话框
所以在文件选取对话框交互结束后,应进行判断,是否从对话框中选取了文件,然后根据返回值情况进行处理。
例8-12演示了JFileChooser类的showOpenDialog方法的使用,JFileChooser一般用于可视化的文件读取及保存,本例只是将读取的文件名显示出来,对于进一步的文件读取及保存工作读者可在学习了I/O流后完善本实例。
[例8-12]
import
java.awt.*;
import
javax.swing.*;
import
java.awt.event.*;
class JFileChooserTest extends JFrame{
private JLabel label = new JLabel("所选文件路径:");
private JTextField tfFileName = new JTextField(25);
private JButton btnOpen = new JButton("浏览");
public JFileChooserTest(String title){
super(title);
Container contentPane = this.getContentPane();
contentPane.setLayout(new FlowLayout(5));
contentPane.add(label);
contentPane.add(tfFileName);
contentPane.add(btnOpen);
pack();
setVisible(true);
this.setDefaultClo
SEOperation(JFrame.EXIT_ON_CLOSE);
//监听btnOpen按钮
btnOpen.addActionListener(new MyActionListener());
}
//Action事件处理
private class MyActionListener implements ActionListener{
public void actionPerformed(ActionEvent arg0) {
JFileChooser fc = new JFileChooser("D:
javaPro");
int val = fc.showOpenDialog(null);//文件打开对话框
if(val==fc.APPROVE_OPTION){//正常选择文件
tfFileName.setText(fc.getSelectedFile().toString());
}
else{//未正常选择文件,如选择取消按钮
tfFileName.setText("未选取文件");
}
}
}
}
public class Test8_12 {
public static void main(String[] args) {
new JFileChooserTest("JFileChooser测试");
}
}
程序运行结果。