Mega Code Archive

 
Categories / Java / Development Class
 

A simple frame that allows quick and easy visualisation of something

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