FileDocCategorySizeDatePackage
Blob4.javaAPI DocExample2971Sun Mar 22 21:56:22 GMT 1998None

Blob4.java

// File: Blob4.java
// T Balls : March 1998
// Paint filled ovals on screen
// in response to mouse events
// Modified version of Blob1.java
// Model: a Vector of Blob objects :added
// Colour and size selection added

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

public class Blob4 extends Frame
{  public static void main( String[] args )
   {  new Blob4();
   }
   
   public Blob4()
   {  setTitle( "Blob4" ); 
      setSize( 300, 300 );
      picture = new Picture();

      Panel controls = new Panel();
      controls.setLayout( new FlowLayout( FlowLayout.LEFT ) );

      Choice colours = new Choice();
      colours.addItem( "Red" );
      colours.addItem( "Blue" );
      colours.addItem( "Green" );
      // and so on !
      colours.addItemListener( new ItemListener() {
         public void itemStateChanged( ItemEvent e )
         {  picture.setColour( (String)(e.getItem()) );
         }
      });
      controls.add( colours );
      
      TextField size = new TextField( "10", 3 );
      size.addActionListener( new ActionListener() {
         public void actionPerformed( ActionEvent e )
         {  String s = e.getActionCommand();
            picture.setSize( Integer.parseInt( s.trim() ) );
         }
      });
      controls.add( new Label( " Size:" ) );
      controls.add( size );

      add( "North", controls );
            
      
      addMouseListener( new MouseAdapter() {
         public void mousePressed( MouseEvent e )
         {  picture.addBlob( e.getX(), e.getY() );
            repaint();
         }
      });
      
      addWindowListener( new WindowAdapter() {
         public void windowClosing( WindowEvent e )
         {  System.exit(0);
         }
      });
      
      setVisible( true ); 
   }

   private Picture picture;
   
   public void paint( Graphics g )
   {  picture.paint( g );
   }
   
   public void update( Graphics g )
   {  paint( g );
   }
      
}

class Blob
{  public Blob( int x, int y, int size, Color c )
   {  this.x = x;
      this.y = y;
      this.size = size;
      this.c = c;
   }
   private int x;
   private int y;
   private int size;
   private Color c;

   public void paint( Graphics g )
   {  g.setColor( c );
      g.fillOval( x, y, size, size );
   }
}

class Picture
{  public Picture()
   {  blobs = new Vector();      
   }

   private Vector blobs;
   private Color c = Color.red;
   private int size = 10;

   public void setColour( String colour )
   {  if( colour.equals( "Red" ) )
      {  c = Color.red;
      }
      if( colour.equals( "Blue" ) )
      {  c = Color.blue;
      }
      if( colour.equals( "Green" ) )
      {  c = Color.green;
      }
   }

   public void setSize( int s )
   {  size = s;
   }

   public void addBlob( int x, int y )
   {  blobs.addElement( new Blob( x, y, size, c ) );
   }

   public void paint( Graphics g )
   {  for( int i = 0; i < blobs.size(); i ++ )
      {  ((Blob)(blobs.elementAt(i))).paint(g);
      }
   }
}