Mega Code Archive

 
Categories / Java Tutorial / Swing Event
 

Disable an Action

import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractAction; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JToolBar; public class ActionDisabled extends JFrame {   public static final String ENABLE = "ENABLE";   public static final String DISABLE = "DISABLE";   private JToolBar toolBar = new JToolBar();   private JMenuBar menuBar = new JMenuBar();   private JMenu testMenu = new JMenu("Test");   private MyAction theAction = new MyAction(this);   private JMenuItem disableActionItem= new JMenuItem("Disable the Action");   public ActionDisabled() {     this.setJMenuBar(menuBar);     menuBar.add(testMenu);     testMenu.add(theAction);     toolBar.add(theAction);     disableActionItem.setActionCommand(DISABLE);     testMenu.add(disableActionItem);     disableActionItem.addActionListener(new ActionListener() {       public void actionPerformed(ActionEvent e) {         if (e.getActionCommand().equals(DISABLE)) {           theAction.setEnabled(false);           disableActionItem.setText("Enable the Action");           disableActionItem.setActionCommand(ENABLE);         } else {           theAction.setEnabled(true);           disableActionItem.setText("Disable the Action");           disableActionItem.setActionCommand(DISABLE);         }       }     });     this.getContentPane().add(toolBar, BorderLayout.NORTH);     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     this.getContentPane().setBackground(Color.red);     this.setSize(320, 200);     this.setVisible(true);   }   public static void main(String[] args) {     ActionDisabled t = new ActionDisabled();   } } class MyAction extends AbstractAction {   JFrame f;   boolean toggle = true;   public MyAction(JFrame f) {     super("Change Color");     this.f = f;   }   public void actionPerformed(ActionEvent e) {     if (toggle) {       f.getContentPane().setBackground(Color.blue);       toggle = false;     } else {       f.getContentPane().setBackground(Color.red);       toggle = true;     }     f.repaint();   } }