Event Java

import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class ColorAction extends AbstractAction {
  public ColorAction(String name, Icon icon, Color c, Component comp) {
    putValue(Action.NAME, name);
    putValue(Action.SMALL_ICON, icon);
    putValue("Color", c);
    target = comp;
  }
  public void actionPerformed(ActionEvent evt) {
    Color c = (Color) getValue("Color");
    target.setBackground(c);
    target.repaint();
  }
  private Component target;
  public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setTitle("SeparateGUITest");
    frame.setSize(300, 200);
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    JPanel panel = new JPanel();
    Action blueAction = new ColorAction("Blue", new ImageIcon(
        "blue-ball.gif"), Color.blue, panel);
    Action yellowAction = new ColorAction("Yellow", new ImageIcon(
        "yellow-ball.gif"), Color.yellow, panel);
    Action redAction = new ColorAction("Red",
        new ImageIcon("red-ball.gif"), Color.red, panel);
    panel.add(new JButton(yellowAction));
    panel.add(new JButton(blueAction));
    panel.add(new JButton(redAction));
    panel.registerKeyboardAction(yellowAction, KeyStroke.getKeyStroke(
        KeyEvent.VK_Y, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    panel.registerKeyboardAction(blueAction, KeyStroke.getKeyStroke(
        KeyEvent.VK_B, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    panel.registerKeyboardAction(redAction, KeyStroke.getKeyStroke(
        KeyEvent.VK_R, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
    Container contentPane = frame.getContentPane();
    contentPane.add(panel);
    JMenu m = new JMenu("Color");
    m.add(yellowAction);
    m.add(blueAction);
    m.add(redAction);
    JMenuBar mbar = new JMenuBar();
    mbar.add(m);
    frame.setJMenuBar(mbar);
    frame.show();
  }
}