title: Randomly Generating a shape
body: <p>I am working on a Java screen saver project and so far I have a good portion done. I need the code to generate a random shape of random color in a random position. I believe I have all of the random aspects taken care of, but now I just need to use a timer to create these shapes at 500 ms intervals. I also need to create a counter to count 30 shapes and then clear the screen and start again. (I have the background and the keylistener added for other parts of the project, but they are working perfect, in case anyone was wondering why they were there).</p>
  
  <pre><code>import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;
  import java.util.Random;
  
  public class ScreenSaver1 extends JPanel implements ActionListener {
      private JFrame frame = new JFrame("FullSize");
      private Rectangle rectangle;
      Timer t;
      int x1, y1;
      boolean full;
  
      protected void paintComponent(Graphics g) {
          super.paintComponent(g);
          int shape;
          shape = (int)(Math.random() * 4);
      }
  
      ScreenSaver1() {
          t = new Timer(500, this);
          t.setDelay(500);
          t.start();
          // Remove the title bar, min, max, close stuff
          frame.setUndecorated(true);
          // Add a Key Listener to the frame
          frame.addKeyListener(new KeyHandler());
          // Add this panel object to the frame
          frame.add(this);
          // Get the dimensions of the screen
          rectangle = GraphicsEnvironment.getLocalGraphicsEnvironment()
          .getDefaultScreenDevice().getDefaultConfiguration().getBounds();
          // Set the size of the frame to the size of the screen
          frame.setSize(rectangle.width, rectangle.height);
          frame.setVisible(true);
          // Remember that we are currently at full size
          full = true;
      }
  
  
  // This method will run when any key is pressed in the window
  class KeyHandler extends KeyAdapter {
      public void keyPressed(KeyEvent e) {
          // Terminate the program.
          if (e.getKeyChar() == 'x') {
              System.out.println("Exiting");
              System.exit(0);
          }
          else if (e.getKeyChar() == 'r') {
              System.out.println("Change background color");
              setBackground(new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256)));
              repaint();
          }
          else if (e.getKeyChar() == 'z') {
              System.out.println("Resizing");
              frame.setSize((int)rectangle.getWidth() / 2, (int)rectangle.getHeight());
          }
      }
  
  }
  
  private void makeLine(Graphics g) {
      int x = (int)(Math.random() * rectangle.getWidth());
      int y = (int)(Math.random() * rectangle.getHeight());
      int x1 = (int)(Math.random() * 100);
      int y1 = (int)(Math.random() * 100);
      g.setColor(new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256) ));
      g.drawLine(x, y, x1, y1);
  }
  
  private void makeRect(Graphics g) {
      int x = (int)(Math.random() * rectangle.getWidth());
      int y = (int)(Math.random() * rectangle.getHeight());
      int width = (int)(Math.random() * 100);
      int height = (int)(Math.random() * 100);
      g.setColor(new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256) ));
      g.drawRect(x, y, width, height);
  }
  
  private void makeOval(Graphics g) {
      int x = (int)(Math.random() * rectangle.getWidth());
      int y = (int)(Math.random() * rectangle.getHeight());
      int width = (int)(Math.random() * 100);
      int height = (int)(Math.random() * 100);
      g.setColor(new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256) ));
      g.drawOval(x, y, width, height);
  }
  
  private void makeRoundRect(Graphics g) {
      int x = (int)(Math.random() * rectangle.getWidth());
      int y = (int)(Math.random() * rectangle.getHeight());
      int width = (int)(Math.random() * 100);
      int height = (int)(Math.random() * 100);
      int arcWidth = (int)(Math.random() * width);
      int arcHeight = (int)(Math.random() * height);
      g.setColor(new Color((int)(Math.random() * 256), (int)(Math.random() * 256), (int)(Math.random() * 256) ));
      g.drawRoundRect(x, y, width, height, arcWidth, arcHeight);
  }
  
  public static void main(String[] args) {
          ScreenSaver1 obj = new ScreenSaver1();
      }
  }
  </code></pre>