September 29, 2003

Drawing Random Circles & Squares



 



/*
 Draws a circle
 */ 
import java.awt.*;
   import java.applet.Applet;
   import java.awt.event.*;
public class DrawCircle extends Applet implements ActionListener
   {
   Button circleButton, squareButton;
   
   int radius = 20;
   int x, y;
   int size = 50;
   int red, green, blue;
   
   boolean SQUARE = true;
   
   public void init() {
   
   x = 200;
   y = 200;
   
   red = green = blue = 0;
   
   // Draw the GUI
   
   // Create the button
   circleButton = new Button("Draw Circle");
   squareButton = new Button("Draw Square");
   
   // Add it to the applet
   add(circleButton);
   add(squareButton);
   
   // Add a listener for it
   circleButton.addActionListener(this);
   squareButton.addActionListener(this);
   }// init
   
   public void paint(Graphics g) {
   
   // set the drawing color to a random color
   g.setColor(new Color(red, green, blue));
   
   if (SQUARE == false) {
   // paint a circle
   drawCircle(g, x, y, radius);
   }
   else {
   // paint a square
   drawSquare(g, x, y, size);
   }
   
   // print out the values of x, y, and r
   System.out.println("x="+x+", y="+y+", radius="+radius);
   g.drawString("x="+x+", y="+y+", radius="+radius,   10, 390);
   
   } //paint
   
   // Listener for button
   public void actionPerformed(ActionEvent e) {
   
   // Decide which button was pressed
   if (e.getSource() == circleButton) {
   // circle button was pressed
   SQUARE = false;
   }
   else {
   // square button was pressed
   SQUARE = true;
   }
   
   // pick a random color
   red = (int) (Math.random()*256);
   green = (int) (Math.random()*256);
   blue = (int) (Math.random()*256);
   
   // Assign random values to x, y, and radius
   // Ensure that x, y is within the bounds of the applet (400x400)
   x = (int) (Math.random()*400);
   y = (int) (Math.random()*400);
   radius = (int) (Math.random()*100);
   size = (int) (Math.random()*200);
   
   repaint();
   
   } // actionPerformed
   
   private void drawSquare(Graphics g, int x, int y, int w) {
   // Draw a square on g with top-left corner at x, y and side w
   
   g.fillRect(x, y, w, w);
   
   } // drawSquare
   
   private void drawCircle(Graphics g, int x, int y, int r) {
   // Draw a circle on g centered at x, y and radius, r
   
   g.fillOval(x-r, y-r, 2*r, 2*r);
   
   } // drawCircle
   
} // DrawCircle