首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的JFileChooser FileFilter不工作

简单的JFileChooser FileFilter不工作
EN

Stack Overflow用户
提问于 2020-01-14 02:05:40
回答 1查看 122关注 0票数 2

下面是一个简单的代码,用于使用从JFileChooser派生的在用户输入目录中保存文件,这是从另一个堆栈溢出问题中提出的答案。但是,由于文件筛选器不显示所有已定义的筛选器,此代码将无法正常工作。

代码语言:javascript
复制
public static void main(String[] args) {
    JFrame main = new JFrame();

    JButton saveto = new JButton("save");
    saveto.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent e) 
        { 
            JFileChooser chooser = new JFileChooser();
            int retval = chooser.showDialog(chooser, "Save");

            FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", "jpg", "gif");
            chooser.setFileFilter(filter);

            if (retval == JFileChooser.APPROVE_OPTION) 
            {
                File f_sample = chooser.getSelectedFile();
                System.out.println(f_sample + ".csv");
            }
        }
    });

    main.add(saveto);
    main.setSize(300,300);
    main.setLocationRelativeTo(null);
    main.setVisible(true);
    main.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}

文件f_sample也将包含null,但删除筛选器将导致文件f_sample按预期工作,其中包含选定的文件。所以我假设故障的原因在FileFilter

文件过滤器有什么问题?我怎样才能让它发挥作用?请注意,代码是Oracle教程中的代码,有一个小的修改。

最后一分钟修改

因此,我使用chooser.addChoosableFileFilter(filter);而不是chooser.setFileFilter(filter);,而文件f_sample现在包含用户定义的文件。但是,定义的过滤器仍然不会显示在JFileChooser窗口上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-14 02:19:49

在设置过滤器之前,您正在显示您的选择器。

更改为

代码语言:javascript
复制
JFileChooser chooser = new JFileChooser();

FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images", 
                                                                        "jpg", "gif");
chooser.setFileFilter(filter);
int retval = chooser.showDialog(chooser, "Save");

// etc
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59726603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档