rt

解决方案 »

  1.   

    用JPanel的paint(Graphics g)方法
    BufferedImage im = new BufferedImage(pane.getWidth(), pane.getHeight(), BufferedImage.TYPE_INT_RGB);
    Graphics g = im.getGraphics();
    pane.paint(g);还有一个办法是抓屏幕
      

  2.   

    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;
        }