JAVA图形-选取本地磁盘中的特定后缀名的文件(JFileChooser和FileFilter)

来源:互联网 发布:济宁市高新区网络问政 编辑:程序博客网 时间:2024/05/15 23:49

文件选择会话框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 "";    }}}