December 16, 2010

import java.awt.Point;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JPanel;
public class PaintPanel extends JPanel
{
private int pointCount = 0; //count number of points
//array of 10000 java.awt.Point references
private Point[] points = new Point[10000];
//set up GUI and register mouse event handler
public PaintPanel()
{
//handle frame mouse motion event
addMouseMotionListener(
new MouseMotionAdapter() //anonymous inner class
{
//store drag coordinates and repaint
public void mouseDragged( MouseEvent event )
{
if( pointCount < points.length )
{
points[ pointCount ] = event.getPoint(); //find point
pointCount++; //increment number of points in array
repaint(); //repaint JFrame
} //end if
} //end method mouseDragged
} //end anonymous inner class
); //end call to addMouseMotionListener
} //end PaintPanel constructor
//draw ovals in a 4-by-4 bounding box at expecified locations on window
public void paintComponent( Graphics g )
{
super.paintComponent( g ); //clears drawing area
//draw all points in array
for( int i = 0; i < pointCount; i++ )
g.fillOval( points[ i ].x, points[i].y, 4, 4 );
} //end method paintComponent
} //end class PaintPanel
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Painter
{
public static void main( String[] args )
{
//create JFrame
JFrame application = new JFrame( "A simple paint program." );
PaintPanel paintPanel = new PaintPanel(); //create paint panel
application.add( paintPanel, BorderLayout.CENTER); //in center
//create a label and place it in SOUTH of BorderLayout
application.add( new JLabel( "Drag the mouse to draw" ),
BorderLayout.SOUTH );
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
application.setSize(400, 200); //set frame size
application.setVisible( true ); //display frame
} //end main
} //end class Painter
