博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swing 把对话框保存为图片
阅读量:6114 次
发布时间:2019-06-21

本文共 2566 字,大约阅读时间需要 8 分钟。

hot3.png

做项目时,有意需求需要把弹出的对话框保存为图片。

重点知识:

        JComponent提供了两个方法,print和printall可以将组件使用Graphics图形环境进行绘制,即将组件本身的内容都绘制到Graphics上,我们如果想要将组件保存成图片的话,只需要创建一个image对象,然后将其Graphics对象传递进去即可,如下所示
BufferedImage image = new BufferedImage(imgW + xgap * 2, imgH + ygap * 2, BufferedImage.TYPE_INT_ARGB);
 Graphics2D g = (Graphics2D) image.getGraphics();

component.print(g);  /(component代表的就是你想要把那个组件保存为图片的)

代码:

public void initImage() {	        try {	 image = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB);               Graphics2D g = (Graphics2D) image.getGraphics();               print(g);	        } catch (Exception e) {	            e.printStackTrace();	        }	    }

上面的代码就是把组件画到了image中,下面就是吧image保存到本地 ,用得是JFileChooser 

                public void saveToFile() {		 	JFileChooser chooser = new JFileChooser();			chooser.setCurrentDirectory(null);//设置默认打开路径			//设置当前目录。传入 null 会设置文件选择器指向用户的默认目录。此默认目录取决于操作系统。在 Windows 上通常是“我的文档”,在 Unix 上是用户的主目录。 如果作为 currentDirectory 所传入的文件不是一个目录,则使用该文件的父级作为 currentDirectory。如果该父级是不可遍历的,则会沿父级树向上查找,直到找到可遍历的目录,或者到达文件系统的根为止。			chooser.setDialogType(JFileChooser.SAVE_DIALOG);//设置保存对话框			chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );			JPGFileFilter fileFilter = new JPGFileFilter();			chooser.addChoosableFileFilter(fileFilter);			chooser.setSelectedFile(new File("撮合详细信息"+buger.getPhoneid()+"_"+seller.getPhoneid()));			//设置 JFileChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录。默认值是 JFilesChooser.FILES_ONLY。 			int index = chooser.showDialog(null, "保存撮合详细文件");			if (index == JFileChooser.APPROVE_OPTION) {				File f = chooser.getSelectedFile();				String fileName = chooser.getName(f) + ".jpg";				String writePath = chooser.getCurrentDirectory().getAbsolutePath()+File.separator + fileName;				System.out.println(writePath);				File pathFile = new File(writePath);				try {					ImageIO.write(image, "jpg", pathFile);				} catch (IOException e1) {					e1.printStackTrace();				}			}	    }

 

//重写文件过滤器,设置打开类型中几种可选的文件类型,这里设了两种,一种jpg    class JPGFileFilter extends FileFilter {	    @Override	    public boolean accept(File f) {	    String nameString = f.getName();	    return nameString.toLowerCase().endsWith(".jpg");	    }	    @Override	    public String getDescription() {	    // TODO Auto-generated method stub	    return "jpg(*.jpg)";	    }    }

效果图:

保存后的图片

知识扩展:下面的代码是获得全屏的图像

Robot robot = new Robot();//	            Dimension d = Toolkit.getDefaultToolkit().getScreenSize();//	            image = robot.createScreenCapture(new Rectangle(0, 0, d.width,//	                    d.height));

转载于:https://my.oschina.net/winHerson/blog/73338

你可能感兴趣的文章
jquery用法大全
查看>>
Groonga 3.0.8 发布,全文搜索引擎
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>
深入浅出NodeJS——数据通信,NET模块运行机制
查看>>
onInterceptTouchEvent和onTouchEvent调用时序
查看>>
android防止内存溢出浅析
查看>>
4.3.3版本之引擎bug
查看>>
SQL Server表分区详解
查看>>
使用FMDB最新v2.3版本教程
查看>>
SSIS从理论到实战,再到应用(3)----SSIS包的变量,约束,常用容器
查看>>