我在我的应用程序中有一个名为“另存为”的方法,将我的应用程序在计算机上的图像保存到文件中。 我使用JFileChooser让用户选择他们想要保存文件的位置。 问题是,除非用户明确键入文件格式,否则不保存文件的扩展名。 如何在“文件类型”下拉菜单中使用jpg,png等格式。如何使用JFileChooser保存文件?
和,我怎样才能从文件类型下拉菜单中保存我的图像文件的扩展名。
ImageIO.write(image,extension,file);
我在我的应用程序中有一个名为“另存为”的方法,将我的应用程序在计算机上的图像保存到文件中。 我使用JFileChooser让用户选择他们想要保存文件的位置。 问题是,除非用户明确键入文件格式,否则不保存文件的扩展名。 如何在“文件类型”下拉菜单中使用jpg,png等格式。如何使用JFileChooser保存文件?
和,我怎样才能从文件类型下拉菜单中保存我的图像文件的扩展名。
ImageIO.write(image,extension,file);
最后,我解决我自己的问题: -
JFileChooser FC=new JFileChooser("C:/");
FC.addChoosableFileFilter(new jpgSaveFilter());
FC.addChoosableFileFilter(new jpegSaveFilter());
FC.addChoosableFileFilter(new PngSaveFilter());
FC.addChoosableFileFilter(new gifSaveFilter());
FC.addChoosableFileFilter(new BMPSaveFilter());
FC.addChoosableFileFilter(new wbmpSaveFilter());
int retrival=m_fileChooser_save.showSaveDialog(null);
if (retrival == m_fileChooser_save.APPROVE_OPTION)
{
String ext="";
String extension=m_fileChooser_save.getFileFilter().getDescription();
if(extension.equals("*.jpg,*.JPG"))
{
ext=".jpg";
}
if(extension.equals("*.png,*.PNG"))
{
ext=".png";
}
if(Extension.equals("*.gif,*.GIF"))
{
ext=".gif";
}
if(extension.equals("*.wbmp,*.WBMP"))
{
ext=".wbmp";
}
if(Extension.equals("*.jpeg,*.JPEG"))
{
EXT=".jpeg";
}
if(extension.equals("*.bmp,*.BMP"))
{
ext=".bmp";
}
例筛选:
import java.io.*;
import java.io.File;
import java.util.*;
import javax.swing.filechooser.FileFilter;
class jpgSaveFilter extends FileFilter
{
public boolean accept(File f)
{
if (f.isDirectory())
{
return false;
}
String s = f.getName();
return s.endsWith(".jpg")||s.endsWith(".JPG");
}
public String getDescription()
{
return "*.jpg,*.JPG";
}
}
使用JFileChoose.SetFileFilter例如:http://www.java2s.com/Code/JavaAPI/javax.swing/JFileChoosersetFileFilterFileFilterfilter.htm
准备文件选择过滤器:
jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File X (.xxx)", "xxx"));
jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Y (.yyy)", "yyy"));
jFileChooser.addChoosableFileFilter(new FileNameExtensionFilter("File Z (.zzz)", "zzz"));
// set default type
jFileChooser.setFileFilter(jFileChooser.getChoosableFileFilters()[0]);
// set default file
jFileChooser().setSelectedFile(defaultFile);
批准验证
//Add extension to Selected file
File file = new File(jFileChooser().getSelectedFile().getCanonicalPath() + "." + ((FileNameExtensionFilter) jFileChooser().getFileFilter()).getExtensions()[0]);
后可能是一个不错的主意验证,如果所选择的文件来与扩展。
我能说,LOD原则在这个答案中出现在窗口。 – 2015-05-07 22:14:53
OMG LOD,再次!对不起,这不是我,我只是另一个面对这个问题的人。 – 2015-05-29 20:04:33
我想我得到了更好的解决方案。 将用示例代码片段来解释它。
这是我如何设置文件过滤器:
jFileChooser.setFileFilter(new FileNameExtensionFilter(".txt", "txt"));
。
此后主保存行:
textArea1.write(new BufferedWriter(new FileWriter(jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", ""))));
。
当然最重要的是这个片段:jFileChooser.getSelectedFile().getAbsolutePath() + jFileChooser.getFileFilter().getDescription().replace("All Files", "")
。
我唯一不喜欢的是,我找不到像'getExtension'这样的任何方法,这意味着你不能有任何好的描述,没有不必要的麻烦与字符串。
好的,明白了。你可以这样做: jFileChooser.getFileFilter().toString().replaceFirst(".*extensions=\\[(.*)]]", ".$1").replaceFirst(".*AcceptAllFileFilter.*", "")
。
不幸的是它不是很漂亮,但似乎像一个魅力。
ok .. setFileFilter将显示文件类型下拉菜单中的扩展名。 但如何检索或使用选定的扩展形式此文件类型下拉菜单.. – 2010-03-27 22:24:32
一旦你有选定的文件,它应该像字符串ext = file.getName()。substring(file.getName()。lastIndexOf ( “”)); – 2010-03-28 00:35:10
这是一个非常疯狂的URL ......它包含三个“java”,“file”和“filter”。 – ArtOfWarfare 2012-11-29 16:03:56