java - 通过文件名过滤文件选择器

标签 java swing filter filenames jfilechooser

我学会了如何使用 filefilter 来使用过滤器。

FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg");

但我想用包含某些字符串的文件过滤我的文件选择器,比如在文件名中包含“sample”。

只能选择具有这些字符串的文件,并且此过滤器不得可编辑。我该怎么做?

最佳答案

public class ImageFilter extends FileFilter {

    //Accept all directories and all jpeg, jpg files with lossy in its filename.
    public boolean accept(File f) {
        if (f.isDirectory()) {
            return true;
        }

        String extension = Utils.getExtension(f);
        String filename = Utils.getName(f);
        if (extension != null) {
            if ((extension.equals(Utils.jpeg) || extension.equals(Utils.jpg)) && filename.contains("lossy")) {
                    return true;
            } else {
                return false;
            }
        }

        return false;
    }

    //The description of this filter
    public String getDescription() {
        return "Images (Lossy)";
    }
}

这是我的工具类

public class Utils {
    public final static String jpeg = "jpeg";
    public final static String jpg = "jpg";

/*
 * Get the extension of a file.
 */
    public static String getExtension(File f) {
        String ext = null;
        String s = f.getName();
        int i = s.lastIndexOf('.');

        if (i > 0 &&  i < s.length() - 1) {
            ext = s.substring(i+1).toLowerCase();
        }
        return ext;
    }
    public static String getName(File f) {
        String fname = null;
        String s = f.getName();
        int i = s.length() - s.lastIndexOf('.');
        fname = s.substring(0,s.length()-i);

        return fname;
    }

    /** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = Utils.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
}

申请,

fc.addChoosableFileFilter(new ImageFilter());

关于java - 通过文件名过滤文件选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712786/

相关文章:

java - android 音频变得嘈杂响应时间

java - 在android中替换TextWatcher中的字符

java - 打开内部框架时管理大型机中的按钮状态

java - 为什么这个 Java 图形在 OS X 中不显示?

java - apache flink - 作为终止条件过滤

java - 在带有附加 Bean 类的 Combobox jsp 中列出数据库值 java

java - Swing 表格中单元格编辑(单击或双击)的最佳实践

r - 使用条件组合在数据框中子集行

HTML 正文标签上的 CSS3 模糊过滤器

java - 在没有主节点的情况下,在 android 中从 JSON 生成 ListView ?