用JPanel的paint(Graphics g)方法 BufferedImage im = new BufferedImage(pane.getWidth(), pane.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics g = im.getGraphics(); pane.paint(g);还有一个办法是抓屏幕
public static boolean saveToJPEG(Component comp) { boolean result = true; try { int w = comp.getWidth(); int h = comp.getHeight(); BufferedImage image = (BufferedImage) comp.createImage(w, h); Graphics2D g2 = image.createGraphics(); comp.print(g2); String filename = FileChooser.getSaveFileName(comp,"*.jpg"); if(filename==null)return false; BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filename)); com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(bos); com.sun.image.codec.jpeg.JPEGEncodeParam jep = encoder.getDefaultJPEGEncodeParam(image); jep.setQuality(1.0f, false); encoder.setJPEGEncodeParam(jep); encoder.encode(image); bos.close(); } catch (Exception e) { result = false; e.printStackTrace(); } return result; }
BufferedImage im = new BufferedImage(pane.getWidth(), pane.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics g = im.getGraphics();
pane.paint(g);还有一个办法是抓屏幕
boolean result = true;
try {
int w = comp.getWidth();
int h = comp.getHeight();
BufferedImage
image = (BufferedImage) comp.createImage(w, h);
Graphics2D g2 = image.createGraphics();
comp.print(g2); String filename = FileChooser.getSaveFileName(comp,"*.jpg");
if(filename==null)return false;
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream(filename));
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.jpeg.JPEGCodec.createJPEGEncoder(bos);
com.sun.image.codec.jpeg.JPEGEncodeParam jep = encoder.getDefaultJPEGEncodeParam(image);
jep.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(jep);
encoder.encode(image);
bos.close();
}
catch (Exception e) {
result = false;
e.printStackTrace();
}
return result;
}