首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-01-22 
请教如何将窗体当前布局输出为图片?我在编写APPLET的时候,例如在一个Pane上有几个按钮,还有几个Label,或许

请教如何将窗体当前布局输出为图片?
我在编写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");



public void paintCom(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(img,0,0,getWidth(),getHeight(),this);
}
public MyPanel() {
super(null,true); //空布局
initialize();
}


private void initialize() {
this.setSize(300, 200);
this.setLayout(new GridBagLayout());
}

}

热点排行