Java 简单JFileChooser文件筛选器不工作

Java 简单JFileChooser文件筛选器不工作,java,swing,jfilechooser,filefilter,Java,Swing,Jfilechooser,Filefilter,下面是一个简单的代码,用于使用JFileChooser将文件保存在用户输入目录中,该文件是由另一个stackoverflow问题的答案所建议的。但是,由于文件筛选器不显示所有已定义的筛选器,因此此代码将无法正常工作 public static void main(String[] args) { JFrame main = new JFrame(); JButton saveto = new JButton("save"); saveto.addActionListen

下面是一个简单的代码,用于使用
JFileChooser
将文件保存在用户输入目录中,该文件是由另一个stackoverflow问题的答案所建议的。但是,由于文件筛选器不显示所有已定义的筛选器,因此此代码将无法正常工作

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.addchoosablefilter(filter)而不是
chooser.setFileFilter(过滤器)
和文件
f_sample
现在包含用户定义的文件。但是,定义的筛选器仍不会显示在
JFileChooser
窗口上。

在设置筛选器之前,您正在显示选择器

改为

JFileChooser chooser = new JFileChooser();

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

// etc