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