Example01.java

import java.applet.*;
import java.awt.*;

public class Example01 extends Applet {

   public void init() {
      setBackground( Color.black );
   }

   public void paint( Graphics g ) {

      // The origin (0,0) is at the upper left corner.
      // x increases to the right, and y increases downward.

      g.setColor( Color.white );
      for ( int i = 0; i < 5; ++i ) {
         g.drawLine( 10, 55, 110, 55+i*8 );
      }

      g.setColor( Color.red );
      g.drawRect( 10, 20, 100, 15 );
      g.setColor( Color.pink );
      g.fillRect( 240, 160, 40, 110 );

      g.setColor( Color.blue );
      g.drawOval( 50, 225, 100, 50 );
      g.setColor( Color.orange );
      g.fillOval( 225, 37, 50, 25 );

      g.setColor( Color.yellow );
      g.drawArc( 10, 110, 80, 80, 90, 180 );
      g.setColor( Color.cyan );
      g.fillArc( 140, 40, 120, 120, 90, 45 );

      g.setColor( Color.magenta );
      g.fillArc( 150, 150, 100, 100, 90, 90 );
      g.setColor( Color.black );
      g.fillArc( 160, 160, 80, 80, 90, 90 );

      g.setColor( Color.green );
      g.drawString( "Superbe!", 50, 150 );
   }
}

( You need to enable Java to see this applet. )

Example02.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Example02 extends Applet
   implements MouseListener, MouseMotionListener {

   Vector< Point > listOfPositions = new Vector< Point >();

   public void init() {
      setBackground( Color.black );

      addMouseListener( this );
      addMouseMotionListener( this );
   }

   public void mouseEntered( MouseEvent e ) { }
   public void mouseExited( MouseEvent e ) { }
   public void mouseClicked( MouseEvent e ) { }
   public void mousePressed( MouseEvent e ) { }
   public void mouseReleased( MouseEvent e ) { }
   public void mouseMoved( MouseEvent e ) {

      if ( listOfPositions.size() >= 50 ) {
         listOfPositions.removeElementAt( 0 );
      }

      listOfPositions.addElement( new Point( e.getX(), e.getY() ) );

      repaint();
      e.consume();
   }
   public void mouseDragged( MouseEvent e ) { }

   public void paint( Graphics g ) {
      g.setColor( Color.white );
      for ( int j = 1; j < listOfPositions.size(); ++j ) {
         Point A = listOfPositions.elementAt( j-1 );
         Point B = listOfPositions.elementAt( j );
         g.drawLine( A.x, A.y, B.x, B.y );
      }
   }
}

( You need to enable Java to see this applet. )

Example03.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Example03 extends Applet
   implements KeyListener, MouseListener {

   int x, y;
   String s = "";

   public void init() {
      setBackground( Color.black );

      x = getWidth() / 2;
      y = getHeight() / 2;

      addKeyListener( this );
      addMouseListener( this );
   }

   public void keyPressed( KeyEvent e ) { }
   public void keyReleased( KeyEvent e ) { }
   public void keyTyped( KeyEvent e ) {
      char c = e.getKeyChar();
      if ( c != KeyEvent.CHAR_UNDEFINED ) {
         s = s + c;
         repaint();
         e.consume();
      }
   }

   public void mouseEntered( MouseEvent e ) { }
   public void mouseExited( MouseEvent e ) { }
   public void mousePressed( MouseEvent e ) { }
   public void mouseReleased( MouseEvent e ) { }
   public void mouseClicked( MouseEvent e ) {
      x = e.getX();
      y = e.getY();
      s = "";
      repaint();
      e.consume();
   }

   public void paint( Graphics g ) {
      g.setColor( Color.gray );
      g.drawLine( x, y, x, y-10 );
      g.drawLine( x, y, x+10, y );
      g.setColor( Color.green );
      g.drawString( s, x, y );
   }
}

( You need to enable Java to see this applet. )

Example04.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Example04 extends Applet
   implements MouseListener, MouseMotionListener {

   int mouse_x, mouse_y;  // the mouse coordinates
   boolean isButtonPressed = false;

   public void init() {
      setBackground( Color.black );

      mouse_x = getWidth() / 2;
      mouse_y = getHeight() / 2;

      addMouseListener( this );
      addMouseMotionListener( this );
   }

   public void mouseEntered( MouseEvent e ) { }
   public void mouseExited( MouseEvent e ) { }
   public void mouseClicked( MouseEvent e ) { }
   public void mousePressed( MouseEvent e ) {
      isButtonPressed = true;
      setBackground( Color.gray );
      repaint();
      e.consume();
   }
   public void mouseReleased( MouseEvent e ) {
      isButtonPressed = false;
      setBackground( Color.black );
      repaint();
      e.consume();
   }
   public void mouseMoved( MouseEvent e ) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      showStatus( "Mouse at (" + mouse_x + "," + mouse_y + ")" );
      repaint();
      e.consume();
   }
   public void mouseDragged( MouseEvent e ) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      showStatus( "Mouse at (" + mouse_x + "," + mouse_y + ")" );
      repaint();
      e.consume();
   }

   public void paint( Graphics g ) {
      g.setColor( isButtonPressed ? Color.black : Color.gray );
      g.fillRect( mouse_x-20, mouse_y-20, 40, 40 );
   }
}

( You need to enable Java to see this applet. )

Example05.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Example05 extends Applet
   implements MouseListener, MouseMotionListener {

   int x0, y0;    // coordinates of the upper-left corner of the box
   static final int boxWidth = 40;
   static final int boxHeight = 40;
   int mouse_x, mouse_y;  // most recently recorded mouse coordinates
   boolean isBoxBeingDragged = false;

   public void init() {
      setBackground( Color.black );

      x0 = getWidth() / 2 - boxWidth / 2;
      y0 = getHeight() / 2 - boxHeight / 2;

      addMouseListener( this );
      addMouseMotionListener( this );
   }

   public void mouseEntered( MouseEvent e ) { }
   public void mouseExited( MouseEvent e ) { }
   public void mouseClicked( MouseEvent e ) { }
   public void mousePressed( MouseEvent e ) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      if (
         x0 <= mouse_x
         && mouse_x < x0+boxWidth
         && y0 <= mouse_y
         && mouse_y < y0+boxHeight
      ) {
         isBoxBeingDragged = true;
      }
      e.consume();
   }
   public void mouseReleased( MouseEvent e ) {
      isBoxBeingDragged = false;
      e.consume();
   }
   public void mouseMoved( MouseEvent e ) { }
   public void mouseDragged( MouseEvent e ) {
      int new_mouse_x = e.getX();
      int new_mouse_y = e.getY();
      if ( isBoxBeingDragged ) {
         // displace the box by the distance
         // the mouse moved since the last event
         x0 += new_mouse_x - mouse_x;
         y0 += new_mouse_y - mouse_y;

         repaint();
         e.consume();
      }
      mouse_x = new_mouse_x;
      mouse_y = new_mouse_y;
   }

   public void paint( Graphics g ) {
      g.setColor( Color.gray );
      g.fillRect( x0, y0, boxWidth, boxHeight );
   }
}

( You need to enable Java to see this applet. )

Example06.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Example06 extends Applet
   implements MouseListener, MouseMotionListener {

   int window_x, window_y;    // upper-left corner of the window
   int window_width = 60, window_height = 40; // dimensions of window
   static final int window_resize_box_size = 15;
   boolean isWindowBeingDragged = false;
   boolean isWindowBeingResized = false;

   int mouse_x, mouse_y;

   public void init() {
      setBackground( Color.black );

      window_x = getWidth()/2 - window_width/2;
      window_y = getHeight()/2 - window_height/2;

      addMouseListener( this );
      addMouseMotionListener( this );
   }

   boolean isInsideWindow( int x, int y ) {
      return
         window_x <= x && x < window_x+window_width
         && window_y <= y && y < window_y+window_height;
   }
   boolean isInsideWindowResizeBox( int x, int y ) {
      return
         window_x+window_width-window_resize_box_size <= x
         && x < window_x+window_width
         && window_y+window_height-window_resize_box_size <= y
         && y < window_y+window_height;
   }

   public void mouseEntered( MouseEvent e ) { }
   public void mouseExited( MouseEvent e ) { }
   public void mouseClicked( MouseEvent e ) { }
   public void mousePressed( MouseEvent e ) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      if ( isInsideWindow( mouse_x, mouse_y ) ) {
         if ( isInsideWindowResizeBox( mouse_x, mouse_y ) ) {
            isWindowBeingResized = true;
         }
         else isWindowBeingDragged = true;
      }
      e.consume();
   }
   public void mouseReleased( MouseEvent e ) {
      isWindowBeingDragged = isWindowBeingResized = false;
      e.consume();
   }
   public void mouseMoved( MouseEvent e ) { }
   public void mouseDragged( MouseEvent e ) {
      int new_mouse_x = e.getX();
      int new_mouse_y = e.getY();
      int delta_x = new_mouse_x - mouse_x;
      int delta_y = new_mouse_y - mouse_y;
      if ( isWindowBeingDragged ) {
         window_x += delta_x;
         window_y += delta_y;
         repaint();
         e.consume();
      }
      else if ( isWindowBeingResized ) {
         window_width += delta_x;
         window_height += delta_y;
         if ( window_width < 2*window_resize_box_size )
            window_width = 2*window_resize_box_size;
         if ( window_height < 2*window_resize_box_size )
            window_height = 2*window_resize_box_size;
         repaint();
         e.consume();
      }
      mouse_x = new_mouse_x;
      mouse_y = new_mouse_y;
   }

   public void paint( Graphics g ) {
      g.setColor( Color.white );
      g.drawRect( window_x, window_y, window_width-1, window_height-1 );
      g.drawRect(
         window_x + window_width - window_resize_box_size,
         window_y + window_height - window_resize_box_size,
         window_resize_box_size-1,
         window_resize_box_size-1
      );
   }
}

( You need to enable Java to see this applet. )

Example07.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

class Example07_Window {
   int x0, y0; // upper-left corner
   static final int width = 30;
   static final int height = 30;

   public Example07_Window( int x, int y ) {
      x0 = x;
      y0 = y;
   }
   public boolean isInside( int x, int y ) {
      return x0 <= x && x < x0+width
         && y0 <= y && y < y0+height;
   }
   public void move( int delta_x, int delta_y ) {
      x0 += delta_x;
      y0 += delta_y;
   }
   public void draw( Graphics g, boolean isFilled ) {
      g.setColor( Color.white );
      g.drawRect( x0, y0, width-1, height-1 );
      g.setColor( Color.black );
      g.fillRect( x0+1, y0+1, width-2, height-2 );
      if ( isFilled ) {
         g.setColor( Color.white );
         g.fillRect( x0+2, y0+2, width-4, height-4 );
      }
   }
}

public class Example07 extends Applet
   implements MouseListener, MouseMotionListener {

   Vector< Example07_Window > windows = new Vector< Example07_Window >();
   int indexOfWindowBeingDragged = -1; // -1 for none

   int mouse_x, mouse_y;

   public void init() {
      setBackground( Color.black );

      for ( int i = 0; i < 5; ++i ) {
         windows.addElement(
            new Example07_Window(
               (int)( Math.random() * getWidth() * 0.9f ),
               (int)( Math.random() * getHeight() * 0.9f )
            )
         );

      }

      addMouseListener( this );
      addMouseMotionListener( this );
   }

   public void mouseEntered( MouseEvent e ) { }
   public void mouseExited( MouseEvent e ) { }
   public void mouseClicked( MouseEvent e ) { }
   public void mousePressed( MouseEvent e ) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      if ( indexOfWindowBeingDragged == -1 ) {
         for ( int i = windows.size()-1; i >= 0; --i ) {
            Example07_Window win = windows.elementAt(i);
            if ( win.isInside( mouse_x, mouse_y ) ) {
               indexOfWindowBeingDragged = i;
               repaint();
               break;
            }
         }
      }
      e.consume();
   }
   public void mouseReleased( MouseEvent e ) {
      if ( indexOfWindowBeingDragged > -1 ) {
         indexOfWindowBeingDragged = -1;
         repaint();
      }
      e.consume();
   }
   public void mouseMoved( MouseEvent e ) { }
   public void mouseDragged( MouseEvent e ) {
      int new_mouse_x = e.getX();
      int new_mouse_y = e.getY();
      if ( indexOfWindowBeingDragged > -1 ) {
         Example07_Window win = windows.elementAt(indexOfWindowBeingDragged);
         win.move( new_mouse_x - mouse_x, new_mouse_y - mouse_y );
         repaint();
         e.consume();
      }
      mouse_x = new_mouse_x;
      mouse_y = new_mouse_y;
   }

   public void paint( Graphics g ) {
      for ( int i = 0; i < windows.size(); ++i ) {
         Example07_Window win = windows.elementAt(i);
         win.draw( g, i == indexOfWindowBeingDragged );
      }
   }
}

( You need to enable Java to see this applet. )

Example08.java

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

class Example08_Window {
   int x0, y0; // upper-left corner
   static final int width = 30;
   static final int height = 30;

   public Example08_Window( int x, int y ) {
      x0 = x;
      y0 = y;
   }
   public boolean isInside( int x, int y ) {
      return x0 <= x && x < x0+width
         && y0 <= y && y < y0+height;
   }
   public void move( int delta_x, int delta_y ) {
      x0 += delta_x;
      y0 += delta_y;
   }
   public void draw( Graphics g, boolean isHilited, boolean isFilled ) {
      g.setColor( Color.white );
      g.drawRect( x0, y0, width-1, height-1 );
      g.setColor( Color.black );
      g.fillRect( x0+1, y0+1, width-2, height-2 );
      if ( isHilited || isFilled ) {
         g.setColor( isFilled ? Color.white : Color.gray );
         g.fillRect( x0+2, y0+2, width-4, height-4 );
      }
   }
}

public class Example08 extends Applet
   implements MouseListener, MouseMotionListener {

   Vector< Example08_Window > windows = new Vector< Example08_Window >();
   int indexOfWindowUnderCursor = -1; // -1 for none
   boolean isWindowUnderCursorBeingDragged = false;

   int mouse_x, mouse_y;

   public void init() {
      setBackground( Color.black );

      for ( int i = 0; i < 5; ++i ) {
         windows.addElement(
            new Example08_Window(
               (int)( Math.random() * getWidth() * 0.9f ),
               (int)( Math.random() * getHeight() * 0.9f )
            )
         );

      }

      addMouseListener( this );
      addMouseMotionListener( this );
   }

   private int computeIndexOfWindowUnderCursor() {
      for ( int i = windows.size()-1; i >= 0; --i ) {
         Example08_Window win = windows.elementAt(i);
         if ( win.isInside( mouse_x, mouse_y ) ) {
            return i;
         }
      }
      return -1;
   }

   public void mouseEntered( MouseEvent e ) { }
   public void mouseExited( MouseEvent e ) { }
   public void mouseClicked( MouseEvent e ) { }
   public void mousePressed( MouseEvent e ) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      if ( ! isWindowUnderCursorBeingDragged
         && indexOfWindowUnderCursor > -1
      ) {
         isWindowUnderCursorBeingDragged = true;
         repaint();
      }
      e.consume();
   }
   public void mouseReleased( MouseEvent e ) {
      if ( isWindowUnderCursorBeingDragged ) {
         isWindowUnderCursorBeingDragged = false;
         repaint();
      }
      e.consume();
   }
   public void mouseMoved( MouseEvent e ) {
      mouse_x = e.getX();
      mouse_y = e.getY();
      int newIndex = computeIndexOfWindowUnderCursor();
      if ( newIndex != indexOfWindowUnderCursor ) {
         indexOfWindowUnderCursor = newIndex;
         repaint();
      }
      e.consume();
   }
   public void mouseDragged( MouseEvent e ) {
      int new_mouse_x = e.getX();
      int new_mouse_y = e.getY();
      if ( isWindowUnderCursorBeingDragged ) {
         Example08_Window win = windows.elementAt(indexOfWindowUnderCursor);
         win.move( new_mouse_x - mouse_x, new_mouse_y - mouse_y );
         repaint();
         e.consume();
      }
      mouse_x = new_mouse_x;
      mouse_y = new_mouse_y;
   }

   public void paint( Graphics g ) {
      for ( int i = 0; i < windows.size(); ++i ) {
         Example08_Window win = windows.elementAt(i);
         win.draw(
            g,
            i == indexOfWindowUnderCursor && !isWindowUnderCursorBeingDragged,
            i == indexOfWindowUnderCursor && isWindowUnderCursorBeingDragged
         );
      }
   }
}

( You need to enable Java to see this applet. )