java - 文件选择器问题

标签 java jfilechooser

我对文件过滤器有疑问。我实际上只是按照 Oracle 的教程进行操作,但似乎不起作用。所以我寻找其他问题。应用了它,过滤器仍然不起作用。另外为什么我无法获取文件的文件名。我得到空指针。为什么是这样?感谢您的帮助!

代码如下:

    StringBuilder sb = new StringBuilder();
    if (e.getSource() == btnMassEncode) {
        int returnVal = fc.showOpenDialog(null);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            fc.setFileFilter(new FileFilter() {         

                   @Override
                   public String getDescription() {
                        return "Portable Network Graphics (*.png)";
                    }

                   @Override
                   public boolean accept(File f) {
                        if (f.isDirectory()) {
                            return true;
                        } else {
                            return f.getName().toLowerCase().endsWith(".png");
                        }
                    }
                });
            fc.setAcceptAllFileFilterUsed(false);
            File file = fc.getSelectedFile();
            // This is where a real application would open the file.
            sb.append("Opening: " + file.getName());
        } else {
            sb.append("Open command cancelled by user.");
        }
    }
    System.out.println(sb.toString());

最佳答案

在打开过滤器之前设置它...

StringBuilder sb = new StringBuilder();
if (e.getSource() == btnMassEncode) {
    fc.setFileFilter(new FileFilter() {         

           @Override
           public String getDescription() {
               return "Portable Network Graphics (*.png)";
           }

           @Override
           public boolean accept(File f) {
                if (f.isDirectory()) {
                    return true;
                } else {
                    return f.getName().toLowerCase().endsWith(".png");
                }
            }
        });
    fc.setAcceptAllFileFilterUsed(false);
    int returnVal = fc.showOpenDialog(null);

    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fc.getSelectedFile();
        // This is where a real application would open the file.
        sb.append("Opening: " + file.getName());
    } else {
        sb.append("Open command cancelled by user.");
    }
}
System.out.println(sb.toString());

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

相关文章:

java - 关于Java Split命令解析csv文件

java - JFileChooser 不遵循外观

java - 如何使用 JFileChooser.showSaveDialog(...) 设置建议的文件名?

java - 在 mac 上通过 Eclipse 使用 tess4j、ghostscript 和 Java

java - Webjars 定位器不适用于基于 XML 的 Spring MVC 4.2.x 配置?

java - 不同操作系统下服务器mysql中的数据库 'mysql'

java - JFileChooser.FILES_ONLY 获取文件和目录

java - 在不关闭对话框的情况下取消在 JFileChooser 中选择文件

java - 将 JFileChooser 添加到 Eclipse Window Builder

java - Android ArrayAdapter 未定义