// 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);
}
}
} |