Mega Code Archive

 
Categories / Java by API / Javax Swing
 

Action

import java.awt.BorderLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; public class MainClass extends JFrame {   public static final int MIN_NUMBER = 2;   public static final int MAX_NUMBER = 13;   private int currentNumber = MIN_NUMBER;   private int favoriteNumber = 9;   private JLabel numberLabel = new JLabel();   private Action upAction = new UpAction();   private Action downAction = new DownAction();   private GotoFavoriteAction gotoFavoriteAction = new GotoFavoriteAction();   private Action setFavoriteAction = new SetFavoriteAction();   public class UpAction extends AbstractAction {     public UpAction() {       putValue(NAME, "Number Add");       putValue(SMALL_ICON, new ImageIcon("images/up.gif"));       putValue(SHORT_DESCRIPTION, "Increment the number");       putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_A));     }     public void actionPerformed(ActionEvent ae) {       setChannel(currentNumber + 1);     }   }   public class DownAction extends AbstractAction {     public DownAction() {       putValue(NAME, "Number Down");       putValue(SMALL_ICON, new ImageIcon("images/down.gif"));       putValue(SHORT_DESCRIPTION, "Decrement the number");       putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_D));     }     public void actionPerformed(ActionEvent ae) {       setChannel(currentNumber - 1);     }   }   public class GotoFavoriteAction extends AbstractAction {     public GotoFavoriteAction() {       putValue(SMALL_ICON, new ImageIcon("images/fav.gif"));       putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_G));       updateProperties();     }     public void updateProperties() {       putValue(NAME, "Go to number " + favoriteNumber);       putValue(SHORT_DESCRIPTION, "Change the number to " + favoriteNumber);     }     public void actionPerformed(ActionEvent ae) {       setChannel(favoriteNumber);     }   }   public class SetFavoriteAction extends AbstractAction {     public SetFavoriteAction() {       putValue(NAME, "Set 'Go to' number");       putValue(SMALL_ICON, new ImageIcon("images/set.gif"));       putValue(SHORT_DESCRIPTION, "Make current number the Favorite number");       putValue(MNEMONIC_KEY, new Integer(KeyEvent.VK_S));     }     public void actionPerformed(ActionEvent ae) {       favoriteNumber = currentNumber;       gotoFavoriteAction.updateProperties();       setEnabled(false);       gotoFavoriteAction.setEnabled(false);     }   }   public MainClass() {     super();     setChannel(currentNumber);     numberLabel.setHorizontalAlignment(JLabel.CENTER);     numberLabel.setFont(new Font("Serif", Font.PLAIN, 32));     getContentPane().add(numberLabel, BorderLayout.NORTH);     JPanel buttonPanel = new JPanel(new GridLayout(2, 2, 16, 6));     buttonPanel.setBorder(BorderFactory.createEmptyBorder(6, 16, 16, 16));     getContentPane().add(buttonPanel, BorderLayout.CENTER);     buttonPanel.add(new JButton(upAction));     buttonPanel.add(new JButton(gotoFavoriteAction));     buttonPanel.add(new JButton(downAction));     buttonPanel.add(new JButton(setFavoriteAction));     JMenuBar mb = new JMenuBar();     JMenu menu = new JMenu("Number");     menu.add(new JMenuItem(upAction));     menu.add(new JMenuItem(downAction));     menu.addSeparator();     menu.add(new JMenuItem(gotoFavoriteAction));     menu.add(new JMenuItem(setFavoriteAction));     mb.add(menu);     setJMenuBar(mb);   }   public void setChannel(int chan) {     currentNumber = chan;     numberLabel.setText("Now tuned to number: " + currentNumber);     downAction.setEnabled(currentNumber > MIN_NUMBER);     upAction.setEnabled(currentNumber < MAX_NUMBER);     gotoFavoriteAction.setEnabled(currentNumber != favoriteNumber);     setFavoriteAction.setEnabled(currentNumber != favoriteNumber);   }   public static void main(String argv[]) {     JFrame f = new MainClass();     f.setSize(400, 180);     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     f.setVisible(true);   } }