Mega Code Archive

 
Categories / Java / Event
 

Use Action class

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();   } }