import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;

class ColorChooserFrame extends JFrame {

    Color c  = Color.red;
    DrawPanel drawPanel = new DrawPanel();
    
    class DrawPanel extends JPanel {
   
      public DrawPanel() {
        setBackground(Color.lightGray);
      }
      
      public Dimension getPreferredSize() {
        return new Dimension(200, 100);
      }
    
      public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setPaint(c);
        g2.fill(new Ellipse2D.Double(50, 20, 100, 50));
      }
    }

	public ColorChooserFrame() {
	 	setTitle("ColorChooser Demo");
	 	getContentPane().add(drawPanel,BorderLayout.NORTH);
	 	JPanel buttonPanel = new JPanel();
	 	getContentPane().add(buttonPanel,BorderLayout.SOUTH);
	 	
	    JButton chooseButton = new JButton("Color...");
	 	chooseButton.addActionListener(new ActionListener(){
	      public void actionPerformed (ActionEvent event) {
			Color cnew = JColorChooser.showDialog(drawPanel, "Choose a color...", c);
			if (cnew != null) {
			  c = cnew;
			  drawPanel.repaint();
            }
          }  
	 	});	 	
	 	buttonPanel.add(chooseButton);
	 	
        JButton exitButton = new JButton("Exit");
	 	exitButton.addActionListener(new ActionListener(){
	 	  public void actionPerformed (ActionEvent event) {
            System.exit(0);
          }
	 	});
	 	buttonPanel.add(exitButton);
	 	
	 	setDefaultCloseOperation(EXIT_ON_CLOSE);	 	
	 	pack();
	 	setVisible(true);
	 }
	 
}

class ColorChooser {

  public static void main (String[] argv) {	
    ColorChooserFrame cf = new ColorChooserFrame();
  }
}
