Painter.java// Fig. 14.34: Painter.java
// Testing PaintPanel.
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Point;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JPanel;
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 specified 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
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
Maintained by John Loomis, updated Sat Jun 20 11:32:38 2015