Development Class Java

//package com.ryanm.util.swing;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JComponent;
import javax.swing.JFrame;
/**
 * A simple frame that allows quick and easy visualisation of
 * something
 * 
 * @author ryanm
 */
public class DebugFrame extends JFrame
{
  private DebugPanel panel;
  /**
   * Creates a new Debug frame
   * 
   * @param name
   *           The name for the frame
   * @param x
   *           The width
   * @param y
   *           The height
   */
  public DebugFrame( String name, int x, int y )
  {
    setTitle( "Debug Frame : " + name );
    panel = new DebugPanel( x, y );
    getContentPane().add( panel );
    clear();
    pack();
    setVisible( true );
  }
  /**
   * Creates a new Debug frame
   * 
   * @param x
   *           The width
   * @param y
   *           The height
   */
  public DebugFrame( int x, int y )
  {
    setTitle( "Debug Frame" );
    panel = new DebugPanel( x, y );
    getContentPane().add( panel );
    clear();
    pack();
    setVisible( true );
  }
  /**
   * Gets the graphics for the backing image. Stuff drawn on this
   * context can only be cleared with a call to clear()
   * 
   * @return A {@link Graphics2D} object
   */
  public Graphics2D getDebugGraphics()
  {
    Graphics2D g = panel.buff.createGraphics();
    return g;
  }
  /**
   * Gets the graphics for the frame itself. Stuff drawn to this
   * context will be cleared when refresh() is called
   * 
   * @return A {@link Graphics2D} object
   */
  public Graphics2D getTempDebugGraphics()
  {
    Graphics2D g = ( Graphics2D ) panel.getGraphics();
    return g;
  }
  /**
   * Refreshes the frame by drawing the contents of the back buffer
   */
  public void refresh()
  {
    panel.paint( panel.getGraphics() );
  }
  /**
   * Clears the back buffer
   */
  public void clear()
  {
    Graphics g = panel.buff.getGraphics();
    g.setColor( Color.white );
    g.fillRect( 0, 0, panel.getWidth(), panel.getHeight() );
  }
  private class DebugPanel extends JComponent
  {
    private int x, y;
    private BufferedImage buff;
    private DebugPanel( int x, int y )
    {
      this.x = x;
      this.y = y;
      buff = new BufferedImage( x, y, BufferedImage.TYPE_INT_ARGB );
    }
    @Override
    public void paint( Graphics g )
    {
      g.drawImage( buff, 0, 0, this );
    }
    @Override
    public int getWidth()
    {
      return x;
    }
    @Override
    public int getHeight()
    {
      return y;
    }
    @Override
    public Dimension getPreferredSize()
    {
      return new Dimension( x, y );
    }
  }
}