import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ShapeDrawingExample extends JFrame {

    private JLabel labels[];

    public ShapeDrawingExample(String title) {
        super(title);

        setLayout(new GridLayout(3,2,5,5));
        labels = new JLabel[6];
        for (int i=0; i<6; i++) {
            add(labels[i] = new JLabel());
            labels[i].setBorder(BorderFactory.createRaisedBevelBorder());
        }
        addListeners();
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(300, 300);
    }

    // Add listener for a mouse press
    private void addListeners() {
       MouseAdapter  anAdapter = new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                JLabel  area = (JLabel)e.getSource();
                Graphics g = area.getGraphics();

                // Get a random color
                g.setColor(new Color((float)Math.random(),
                                     (float)Math.random(),
                                     (float)Math.random()));

                // Find the label that caused this event
                int  labelNumber;
                for (labelNumber=0; labelNumber<6; labelNumber++) {
                    if (area == labels[labelNumber]) break;
                }
                int   x = e.getX();
                int   y = e.getY();

                // Now decide what to draw
                switch (labelNumber) {
                  case 0: g.drawString("(" + String.valueOf(x) + "," +
                                       String.valueOf(y) + ")", x, y);  break;
                  case 1: g.drawLine(x, y, x+20, y+20);  break;
                  case 2: g.drawOval(x, y, 10, 20);  break;
                  case 3: g.drawRect(x, y, 40, 20);  break;
                  case 4: g.fillOval(x, y, 10, 20);  break;
                  case 5: g.fillRect(x, y, 40, 20);  break;
                }
            }};

        // Add mouse listeners to all labels (for doing something upon mouse presses)
        for (int i=0; i<6; i++)
            labels[i].addMouseListener(anAdapter);
    }

    public static void main(String args[]) {
        new ShapeDrawingExample("Shape Drawing Example").setVisible(true);
    }
}