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

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

}  
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值