这是部分代码,虽然可以实现图片文件的保存,但在文件名没有添加后缀的情况下不能自动根据下拉菜单所选项添加后缀
这是我的部分代码:
//设置文件对话框的过滤器
1.MyFileFilter mf=new MyFileFilter();
2.String[] str={".jpg",".bmp",".png",".gif",".psd"};
3.mf.addFilter(str,"选择文件(*.jpg,*.bmp,*.png,*.gif,*.psd)");
4.this.fileDialog.addChoosableFileFilter(mf);
// 单击savebtn 按钮
5. public void savebtnClick()
6. {
7. if(targetImg==null)
8. {
9. JOptionPane.showMessageDialog(this, "没有需要保存的图片"); //过滤没有图像文本的文本保存操作
10. return;
11. }
// JFileChooser chooser = new JFileChooser();
// int option = chooser.showSaveDialog(this);
12. this.fileDialog.setDialogTitle("保存图片");
13. if(this.fileDialog.showSaveDialog(this)==0){
14. try
15. {
16. File f=fileDialog.getSelectedFile();
17. if(f.exists()){
18. int i=JOptionPane.showConfirmDialog(this, "该文件已存在,是否覆盖此文件!!!","友情提示",JOptionPane.OK_OPTION);
19. if(i!=0)
20. {
21. return;
22. }
23. }
24. String path=f.getPath();
25. String str=path.substring(path.lastIndexOf("."),path.length());
26. if(!(str.equals(".jpg") || str.equals(".bmp") || str.equals(".png") || str.equals(".psd") || str.equals(".gif")))
27. {
28. f=new File(f.getPath()+".jpg");
29. }
30. ImageIO.write(targetImg, "jpg",f);
//this.savefie.setText(f.getPath());
31. JOptionPane.showMessageDialog(this, "图片保存成功,文件路径为"+path);
32. }
33. catch (Exception e)
34. {
35. JOptionPane.showMessageDialog(this, "对不起,图片保存失败");
36. e.printStackTrace();
37. }
38. }
29.}
大家给点意见,该怎么改呢(我对java不怎么熟练)
------解决方案--------------------------------------------------------
FileChooser
FileFilter getFileFilter()
返回当前选择的文件过滤器。
用这个方法返回当前的filter再获取后缀名就行了
------解决方案--------------------------------------------------------
加多个FileFilter
------解决方案--------------------------------------------------------
你的fileDialog应该是FileChooser对象吧,在确定为OK_OPTION之后
filter =fileDialog.getFileFilter()
filter.getDescription() ,根据这个描述判断是什么后缀
还有种方法就是自己写个类继承FileFilter
- Java code
class MyFileFilter extends FileFilter { private String ext = ".xxxx";//文件扩展名 public String getEnds()//这里就可以方便的获取后缀 { return ext; } @Override public boolean accept(File pathname) { if (pathname.getPath().endsWith(ext) || pathname.isDirectory()) return true; return false; } @Override public String getDescription() { return "xxxxx(" + ext + ")"; } }
------解决方案--------------------------------------------------------
没看懂你想说什么,f=new File(f.getPath()+".jpg");你这个File对象不是已经带后缀了么
------解决方案--------------------------------------------------------
。。。你最好还是把整个文件全路径打印出来看看
JOptionPane.showMessageDialog(this, "图片保存成功,文件路径为"+path);这句话里面用的是path,你的Path是不带后缀的 你文件如果创建成功了肯定是带后缀。。。
File对象的参数没错,你再检查下吧
------解决方案--------------------------------------------------------
你没看6楼的解释?还是不懂什么意思
------解决方案--------------------------------------------------------
牛人哪
------解决方案--------------------------------------------------------
真的 很简单的问题 静下心稍微想想 不要局限在你自己的思维中