// Scott DeRuiter 3/6/2003
// MoveCircle.java
// Move a box around, implementing a MouseMotionListener in
// a Swing Applet.
// 3/13/2013 Greenstein: changed applet to JFrame
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MoveCircle implements MouseMotionListener
{
private int counter, sizeofarray;
private int [] xpos;
private int [] ypos;
private boolean initialdraw;
private JFrame frame;
private MyPanel canvas;
public MoveCircle ()
{
sizeofarray = 100;
counter = 100;
xpos = new int [sizeofarray];
ypos = new int [sizeofarray];
for ( int i = 0; i < xpos.length; i++ )
xpos[i] = ypos[i] = 0;
initialdraw = true;
}
public static void main(String[] args)
{
MoveCircle mb = new MoveCircle();
mb.Run();
}
public void Run()
{
// Create a frame to hold everything
frame = new JFrame ("Move Circle");
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setBackground(Color.black); // only needed if frame is larger than panel
// Define panel to draw on
canvas = new MyPanel(); // create a panel to draw on
canvas.setBackground(Color.blue);
canvas.addMouseMotionListener(this); // connects the addMouseMotionListener to the panel window
// Put frame together
frame.getContentPane().add(canvas); // puts panel on frame
frame.setVisible(true);
}
class MyPanel extends JPanel
{
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if ( !initialdraw )
{
for ( int i = xpos.length - 1; i >= 0; i-- )
{
int value = (i + counter) % 5;
switch ( value )
{
case 0: g.setColor ( Color.white ); break;
case 1: g.setColor ( Color.lightGray ); break;
case 2: g.setColor ( Color.gray ); break;
case 3: g.setColor ( Color.darkGray ); break;
case 4: g.setColor ( Color.black ); break;
}
if ( i == 0 )
g.setColor ( Color.blue );
g.fillOval ( xpos[i] - sizeofarray / 2 + i / 2,
ypos[i] - sizeofarray / 2 + i / 2,
sizeofarray - i, sizeofarray - i );
if ( i == 0 )
g.setColor ( Color.red );
g.drawOval ( xpos[i] - sizeofarray / 2 + i / 2,
ypos[i] - sizeofarray / 2 + i / 2,
sizeofarray - i, sizeofarray - i );
}
}
counter--;
if ( counter == 0 )
counter = 100;
for ( int i = xpos.length - 1; i >= 1; i-- )
{
xpos[i] = xpos[i-1];
ypos[i] = ypos[i-1];
ypos[i] -= 3;
}
}
}
public void mouseMoved ( MouseEvent e )
{
xpos[0] = e.getX();
ypos[0] = e.getY();
if ( initialdraw )
{
for ( int i = 0; i < xpos.length; i++ )
{
xpos[i] = xpos[0];
ypos[i] = ypos[0];
}
initialdraw = false;
}
canvas.repaint();
}
public void mouseDragged ( MouseEvent e ) {}
}
Back to Lesson 25 Examples
Back to Java Main Page