Menu Accelerator : JMenuBar « Swing « Java Tutorial






Menu Accelerator
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.KeyStroke;

public class MenuAcceleratorKeyStroke extends JFrame {
  public MenuAcceleratorKeyStroke() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JMenuBar bar = new JMenuBar();
    JMenu menu = new JMenu("File");
    menu.setMnemonic('f');
    bar.add(menu);

    JMenuItem exit = new JMenuItem("Exit");
    exit.setMnemonic('x');
    exit.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        System.out.println("Exit performed");
        MenuAcceleratorKeyStroke.this.dispose();
        System.exit(0);
      }
    });
    menu.add(exit);

    menu = new JMenu("Edit");
    menu.setMnemonic('e');
    bar.add(menu);

    EditListener l = new EditListener();
    JMenuItem mi;
    mi = menu.add(new JMenuItem("Cut", 't'));
    mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));
    mi.addActionListener(l);
    mi = menu.add(new JMenuItem("Copy", 'c'));
    mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, Event.CTRL_MASK));
    mi.addActionListener(l);
    mi = menu.add(new JMenuItem("Paste", 'p'));
    mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, Event.CTRL_MASK));
    mi.addActionListener(l);

    setJMenuBar(bar);
    getContentPane().add(new JLabel("A placeholder"));

    pack();
    setSize(300, 300);
    setVisible(true);
  }

  private class EditListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      System.out.println(e.getActionCommand());
    }
  }

  public static void main(String arg[]) {
    new MenuAcceleratorKeyStroke();
  }
}








14.22.JMenuBar
14.22.1.Creating JMenuBar ComponentsCreating JMenuBar Components
14.22.2.Adding Menus to and Removing Menus From Menu BarsAdding Menus to and Removing Menus From Menu Bars
14.22.3.Menu AcceleratorMenu Accelerator
14.22.4.Vertical menu barVertical menu bar
14.22.5.Shows how to right-align a menu in the menu bar, using a glue componentShows how to right-align a menu in the menu bar, using a glue component
14.22.6.Customize menu layout by changing the menu bar to use a top-to-bottom box layout, and the popup menu to use a left-to-right box layoutCustomize menu layout by changing the menu bar to use a  top-to-bottom box layout, and the popup menu to use a left-to-right box layout
14.22.7.Customizing JMenuBar Look and Feel