当前位置: 代码迷 >> J2SE >> 请问怎么将窗体当前布局输出为图片
  详细解决方案

请问怎么将窗体当前布局输出为图片

热度:54   发布时间:2016-04-24 13:17:40.0
请教如何将窗体当前布局输出为图片?
我在编写APPLET的时候,例如在一个Pane上有几个按钮,还有几个Label,或许还有其他控件,我现在希望把整个Pane当前的布局样子以JPG图片的形式输出,请教各位应该怎么做?

谢谢。

------解决方案--------------------
枚举父窗口上面的子窗口, 递归枚举, 然后得到它们的位置信息, 然后在Bitmap上描绘出来, 转化为JPEG格式就可以了.
我的思路如此.

------解决方案--------------------

一种办法:
首先知道你程序的位置
然后使用java.awt.Robot类的截图功能

输出么就用javax.imageio.ImageIO类

------解决方案--------------------
给你给现成的类你调用一下

Java code
import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; /*******************************************************************  * 本JavaBean可以直接在其他Java应用程序中调用,实现屏幕的"拍照"  * This JavaBean is used to snapshot the GUI in a   * Java application! You can embeded  * it in to your java application source code, and us  * it to snapshot the right GUI of the application  * @see javax.ImageIO  * @author linys([email]tolys@126.com[/email])  * @version 1.0  *  *****************************************************/ public class GuiCamera {       private String fileName; //文件的名字    private String defaultName = "GuiCamera";     static int serialNum=0;     private String imageFormat; //图像文件的格式      private String defaultImageFormat="png";     Dimension d = Toolkit.getDefaultToolkit().getScreenSize();     /****************************************************************      * 默认的文件名字为GuiCamera,文件格式为PNG格式      * The default construct will use the default       * Image file surname "GuiCamera",       * and default image format "png"      ****************************************************************/     public GuiCamera() {       fileName = defaultName;       imageFormat=defaultImageFormat;          }     /****************************************************************      * @param s the surname of the snapshot file      * @param format the format of the  image file,       * it can be "jpg" or "png"      * 本构造支持JPG和PNG文件的存储     ****************************************************************/     public GuiCamera(String s,String format) {            fileName = s;       imageFormat = format;     }          /****************************************************************      * 对屏幕实行拍照      * snapShot the Gui once      ****************************************************************/     public void snapShot() {            try {       //拷贝屏幕到一个BufferedImage对象screenshot         BufferedImage screenshot = (new Robot()).createScreenCapture(new             Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight()));         serialNum++;         //根据文件前缀和文件格式,自动生成文件名         String name=fileName+String.valueOf(serialNum)+"."+imageFormat;         File f = new File(name);         System.out.print("Save File "+name);       //将screenshot对象写入图像文件         ImageIO.write(screenshot, imageFormat, f);         System.out.print("..Finished!\n");       }       catch (Exception ex) {         System.out.println(ex);       }     }     public static void main(String[] args)     {         GuiCamera cam= new GuiCamera("d:\\Hello", "jpg");//定义文件格式        cam.snapShot();     } }
------解决方案--------------------
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.JPanel;



public class MyPanel extends JPanel {

private static final long serialVersionUID = 1L;
private Image img = Toolkit.getDefaultToolkit().getImage("filename");
  相关解决方案