import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class ImageDemo extends JPanel {
  static BufferedImage img;

  public static void main(String[] args) throws InterruptedException {
    JFrame frame = new JFrame();
    frame.setSize(620, 660);
    ImageDemo image = new ImageDemo();
    frame.getContentPane().add( image );
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    img = new BufferedImage(600, 600, BufferedImage.TYPE_INT_ARGB);
    img.setRGB(0,0, Color.BLACK.getRGB());  // draw directly in image
    Graphics2D g2d = img.createGraphics();            // use Graphics handle
    g2d.setColor(Color.BLACK);
    g2d.drawLine(0,0,600,600);

    image.repaint();
  }


  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawString("Hallo BufferedImage", 20, 20);  // draw directly in panel
    //g.drawLine(0,0,10,10);
    g.drawImage(img, 10, 10, null);          // uses buffered image
  }

}


