下面是一个简单的代码,用于使用从JFileChooser派生的这在用户输入目录中保存文件,这是这从另一个堆栈溢出问题中提出的答案。但是,由于文件筛选器不显示所有已定义的筛选器,此代码将无法正常工作。
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窗口上。
发布于 2020-01-14 02:19:49
在设置过滤器之前,您正在显示您的选择器。
更改为
JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG & GIF Images",
"jpg", "gif");
chooser.setFileFilter(filter);
int retval = chooser.showDialog(chooser, "Save");
// etchttps://stackoverflow.com/questions/59726603
复制相似问题