public static void main(String[] argv) {

    boolean casse_toi = false;

    Frame frame = new Frame("Simple Double Buffering in Window");
    Window win = new Window(frame);

    try {

      frame.setSize(640, 480);
      frame.validate();
      frame.setVisible(true);

      int i;
      int screenWidth = 640;
      int screenHeight = 480;

      Graphics graphicwindow = frame.getGraphics();
      graphicwindow.setColor(Color.white);
      graphicwindow.fillRect(0, 0, screenWidth, screenHeight);

      BufferedImage offscreen =
          new BufferedImage(screenWidth, screenHeight, BufferedImage.TYPE_INT_RGB);
      Graphics offscreen_high = offscreen.createGraphics();
      int frames = 0;
      int j;

      while (!casse_toi) {
        frames++;
        offscreen_high.setColor(Color.black);
        offscreen_high.fillRect(0, 0, screenWidth, screenHeight);

        for (i = 50; i < 400; i++) {
          for (j = 50; j < 400; j++) {
            offscreen.setRGB(i, j, Color.green.getRGB());
          }
        }

        String s = "frame" + frames;
        offscreen_high.setColor(Color.red);
        offscreen_high.drawString(s, 20, 460);
        graphicwindow.drawImage(offscreen, 0, 0, null);
      }

    } catch (Throwable e) {
    }
  }
 private void useFrame() {
   frame = new Frame();
   frame.setVisible(true);
   panel.setGraphics(frame.getGraphics());
 }