Wiatam mam problem, potrzebuje zawartość Panela DrawArea wpakować do BufferedImage, mam taki kod:

import java.awt.* ;
import java.awt.event.* ;
import java.awt.image.* ;
import javax.imageio.*;
import java.io.*;
import javax.swing.*;
/**
 *
 * @author mitrydates
 */
public class ocrWindow extends Frame{
    int x,y;
    Panel drawArea ;
    int drawPoints[][] = new int[10][20] ;
    
    public ocrWindow(){
        this.addWindowListener(new ocrWindowAdapter());
        this.setSize(500, 500);
        
        Panel buttonPanel = new Panel();
        Panel drawPanel = new Panel() ;
        
        buttonPanel.setBackground(Color.BLUE);
        buttonPanel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
        
        Button bClear = new Button("clear") ;
        ButtonClearAdapter bC = new ButtonClearAdapter();
        bClear.addActionListener(bC);
        
        Button bOk = new Button("OK");
        ButtonOkAdapter bO = new ButtonOkAdapter();
        bOk.addActionListener(bO);
        
        buttonPanel.add(bClear);
        buttonPanel.add(bOk) ;
        
        BorderLayout inL = new BorderLayout();
        inL.setHgap(140);
        inL.setVgap(140);
        drawPanel.setLayout(inL);
        drawArea = new Panel() ;
        drawArea.setBackground(Color.GRAY);
        
        drawPanel.add(new Panel(),BorderLayout.NORTH);
        drawPanel.add(new Panel(),BorderLayout.SOUTH);
        drawPanel.add(new Panel(),BorderLayout.WEST);
        drawPanel.add(new Panel(),BorderLayout.EAST);
        
        drawPanel.add(drawArea,BorderLayout.CENTER  );
        drawPanel.setBackground(Color.CYAN);
        
        drawAreaAdapter drow = new drawAreaAdapter();
        drawArea.addMouseListener(drow);
        drawArea.addMouseMotionListener(drow);
        
        this.setLayout(new BorderLayout());
        this.add(buttonPanel,BorderLayout.SOUTH );
        this.add(drawPanel,BorderLayout.CENTER );

        //mainWindow.pack();
        this.setVisible(true);
    }
     /*
     * 
     * function add point to Draw area and table
     * 
     */ 
    public void addPoint(int x, int y){
        
        Graphics g = drawArea.getGraphics() ;
        g.setColor(Color.RED);
        g.drawLine(this.x, this.y, x, y);
        this.x = x;
        this.y = y;
    }
     /*
     * 
     * function clear draw area
     * 
     */ 
    public void clearDrawArea(){
        Graphics g = drawArea.getGraphics() ;
        g.clearRect(0, 0, drawArea.getWidth() ,drawArea.getHeight() );
    }
    public void computDrawArea(){
        //Graphics g = drawArea.getGraphics() ;
        //Graphics2D g2d = (Graphics2D)drawArea.getGraphics() ;
        //g2d.setBackground(Color.GRAY);
        //g2d.setColor(Color.BLACK);
        //g2d.drawString("ggg", 10, 10);
        //g2d.scale(0.5, 0.5);
        //g2d.drawString("hhh", 5, 5);
        //g2d.
        //BufferedImage bI = new BufferedImage(drawArea.getWidth(),drawArea.getHeight(),BufferedImage.TYPE_BYTE_BINARY);

BufferedImage bi = new BufferedImage(drawArea.getWidth(),
drawArea.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = (Graphics2D)bi.createGraphics();
//g.setBackground(Color.WHITE);
//drawArea.pa
//g.setBackground(Color.GRAY);
//g.setColor(Color.RED);
//g.clearRect(0, 0, drawArea.getWidth(), drawArea.getHeight());
//g.drawString("gg", 10, 10);
drawArea.paint(g);
//g.scale(0.5, 0.5) ;
g.dispose();
        try {
          ImageIO.write(bi, "png", new File("twopanels.png"));
        }
        catch(IOException ioe) {
          System.out.println(ioe.getMessage());
        }
//drawArea.paintComponent(g);

//        BufferedImage bI = drawArea.getGraphicsConfiguration().createCompatibleImage(drawArea.getWidth(), drawArea.getHeight());
  //      Graphics2D g2db = (Graphics2D)bI.getGraphics() ;
    //    g2db.setBackground(Color.GRAY);
      //  g2db.setColor(Color.WHITE);
        //g2db.drawString("xxx", 10, 10);
        Graphics2D g2d = (Graphics2D)drawArea.getGraphics() ;
        g2d.drawImage(bi, 0, 0, null);
        //g.drawImage(bI, 0, 0, null);
        // Graphics2D bIg2d = (Graphics2D)bI.getGraphics() ;
      //  bIg2d.drawImage(g2d, 0, 0, null);
        //drawArea.
        //bIg2d = (Graphics2D)g2d.create() ;
        //bI
        //g.setClip() ;
        //drawPoints ;
    }
     /*
     * 
     * Function start application 
     * 
     */ 
    public static void main(String args[]){
        
        ocrWindow mainWindow =  new ocrWindow();


    }
     /*
     * 
     * function set insets in BorderLayout
     * 
     */ 
    public Insets getInsets(){
        return new Insets(50, 50, 50, 50);
    }
     /*
     * 
     * class catch window actions like drawing 
     * 
     */
    class ocrWindowAdapter extends WindowAdapter {
        public void windowClosing(WindowEvent ev){
            System.exit(0);
        }
    }// ocrWindowAdapter
    /*
     * 
     * class catch draw area actions like drawing 
     * 
     */
    class drawAreaAdapter extends MouseAdapter {
        public void mouseClicked(MouseEvent me){
        //    add();
            //repaint() ;
        }
        public void mouseReleased(MouseEvent me){
          //  start = false ;
        }
        public void mousePressed(MouseEvent me){
            x = me.getX() ;
            y = me.getY() ;
            //add() ;
        }
        public void mouseDragged(MouseEvent me){
            addPoint(me.getX(), me.getY()) ;
        }
    }// end class drawAreaAdapter
     /*
     * 
     * class catch button CLEAR actions 
     * 
     */ 
    class ButtonClearAdapter implements ActionListener {

        public void actionPerformed(ActionEvent ae){
            clearDrawArea();
        }
    }// ButtonClearAdapter
         /*
     * 
     * class catch button CLEAR actions 
     * 
     */ 
    class ButtonOkAdapter implements ActionListener {

        public void actionPerformed(ActionEvent ae){
            computDrawArea();
        }
    }// ButtonClearAdapter
}

Musicie coś narysować w szarym panelu na srodku po czym nacisnac OK

tutaj uruchamiana jest funkcja computDrawArea ma ona przeliczać różne bzdury ale to później na poczatek chce z Panelu zczytać dane do BufferedImage ale gdy zrobie:
Panel.paint(g) ;
dostaje tylko czarny kwadrat bez narysowanej zawartosci :).