文件选择会话框JFileChooser
1:JFileChooser()
构造一个指向用户默认目录的 JFileChooser。c:\winnt为打开文件为对话框的默认路径
2:JFileChooser(File currentDirectory)
使用给定的 File 作为路径来构造一个 JFileChooser。
setFileSelectionMode(int mode)
设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录。
mode参数:FILES_AND_DIRECTORIES 指示显示文件和目录。
FILES_ONLY 指示仅显示文件。
DIRECTORIES_ONLY 指示仅显示目录。
3:showDialog(Component parent,String approveButtonText)
弹出具有自定义 approve 按钮的自定义文件选择器对话框。
4:showOpenDialog(Component parent)
弹出一个 “Open File” 文件选择器对话框。
5:showSaveDialog(Component parent)
弹出一个 “Save File” 文件选择器对话框。
6:setMultiSelectionEnabled(boolean b)
设置文件选择器,以允许选择多个文件。
7:getSelectedFiles()
如果将文件选择器设置为允许选择多个文件,则返回选中文件的列表(File[])。
8:getSelectedFile()
返回选中的文件
9:getSelectedFile().getAbsolutePath();
返回文件的绝对路径
文件筛选类FileFilter
在文件选择会话框中增添文件的类型选择机制,可以继承这个类重写里边的accept方法,具体看下代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.filechooser.FileFilter;
public class Main extends JFrame implements ActionListener{
JButton open=null;
public static void main(String[] args) {
new Main();
}
public Main(){
open=new JButton("导入文件");
this.add(open);
this.setBounds(400, 200, 200, 100);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
open.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JFileChooser fileChooser = new JFileChooser();// 以c:\\winnt为打开文件为对话框的默认路径
// 利用addChoosableFileFilter()方法加入欲过滤的文件类型,使用addChoosableFileFilter()可以加入多种文件类型,
// 若你只需要过滤出一种文件类型,可使用setFileFilter()方法.
fileChooser.addChoosableFileFilter(new JAVAFileFilter("jpg"));//导入可选择的文件的后缀名类型
fileChooser.addChoosableFileFilter(new JAVAFileFilter("png"));
fileChooser.showDialog(new JLabel(), "选择");
//File file = fileChooser.getSelectedFile();//可以获取文件
String str = fileChooser.getSelectedFile().getAbsolutePath();
//String str = file.getName();//可以获取文件的文件名
System.out.println(str);
}
class JAVAFileFilter extends FileFilter {
String ext;
public JAVAFileFilter(String ext) {
this.ext = ext;
}
/* 在accept()方法中,当程序所抓到的是一个目录而不是文件时,我们返回true值,表示将此目录显示出来. */
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
String fileName = file.getName();
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1) {
// 表示文件名称不为".xxx"现"xxx."之类型
String extension = fileName.substring(index + 1).toLowerCase();
// 若所抓到的文件扩展名等于我们所设置要显示的扩展名(即变量ext值),则返回true,表示将此文件显示出来,否则返回
// true.
if (extension.equals(ext))
return true;
}
return false;
}
// 实现getDescription()方法,返回描述文件的说明字符串!!!
public String getDescription() {
if (ext.equals("png"))
return "图片(*.png)";
if (ext.equals("jpg"))
return "图片(*.jpg)";
return "";
}
}
}