annotate examples/gui/swing/MenuDemo.java @ 1:5df24c91468d

Oh my what a mess.
author samer
date Fri, 05 Apr 2019 16:26:00 +0100
parents
children
rev   line source
samer@1 1 import java.awt.*;
samer@1 2 import java.awt.event.*;
samer@1 3 import javax.swing.JMenu;
samer@1 4 import javax.swing.JMenuItem;
samer@1 5 import javax.swing.JCheckBoxMenuItem;
samer@1 6 import javax.swing.JRadioButtonMenuItem;
samer@1 7 import javax.swing.ButtonGroup;
samer@1 8 import javax.swing.JMenuBar;
samer@1 9 import javax.swing.KeyStroke;
samer@1 10 import javax.swing.ImageIcon;
samer@1 11
samer@1 12 import javax.swing.JTextArea;
samer@1 13 import javax.swing.JScrollPane;
samer@1 14 import javax.swing.JFrame;
samer@1 15
samer@1 16 /*
samer@1 17 * This class adds event handling to MenuLookDemo.
samer@1 18 */
samer@1 19 public class MenuDemo extends JFrame
samer@1 20 implements ActionListener, ItemListener {
samer@1 21 JTextArea output;
samer@1 22 JScrollPane scrollPane;
samer@1 23 String newline = "\n";
samer@1 24
samer@1 25 public MenuDemo() {
samer@1 26 JMenuBar menuBar;
samer@1 27 JMenu menu, submenu;
samer@1 28 JMenuItem menuItem;
samer@1 29 JRadioButtonMenuItem rbMenuItem;
samer@1 30 JCheckBoxMenuItem cbMenuItem;
samer@1 31
samer@1 32 addWindowListener(new WindowAdapter() {
samer@1 33 public void windowClosing(WindowEvent e) {
samer@1 34 System.exit(0);
samer@1 35 }
samer@1 36 });
samer@1 37
samer@1 38 //Add regular components to the window, using the default BorderLayout.
samer@1 39 Container contentPane = getContentPane();
samer@1 40 output = new JTextArea(5, 30);
samer@1 41 output.setEditable(false);
samer@1 42 scrollPane = new JScrollPane(output);
samer@1 43 contentPane.add(scrollPane, BorderLayout.CENTER);
samer@1 44
samer@1 45 //Create the menu bar.
samer@1 46 menuBar = new JMenuBar();
samer@1 47 setJMenuBar(menuBar);
samer@1 48
samer@1 49 //Build the first menu.
samer@1 50 menu = new JMenu("A Menu");
samer@1 51 menu.setMnemonic(KeyEvent.VK_A);
samer@1 52 menu.getAccessibleContext().setAccessibleDescription(
samer@1 53 "The only menu in this program that has menu items");
samer@1 54 menuBar.add(menu);
samer@1 55
samer@1 56 //a group of JMenuItems
samer@1 57 menuItem = new JMenuItem("A text-only menu item",
samer@1 58 KeyEvent.VK_T);
samer@1 59 //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
samer@1 60 menuItem.setAccelerator(KeyStroke.getKeyStroke(
samer@1 61 KeyEvent.VK_1, ActionEvent.ALT_MASK));
samer@1 62 menuItem.getAccessibleContext().setAccessibleDescription(
samer@1 63 "This doesn't really do anything");
samer@1 64 menuItem.addActionListener(this);
samer@1 65 menu.add(menuItem);
samer@1 66
samer@1 67 menuItem = new JMenuItem("Both text and icon",
samer@1 68 new ImageIcon("images/middle.gif"));
samer@1 69 menuItem.setMnemonic(KeyEvent.VK_B);
samer@1 70 menuItem.addActionListener(this);
samer@1 71 menu.add(menuItem);
samer@1 72
samer@1 73 menuItem = new JMenuItem(new ImageIcon("images/middle.gif"));
samer@1 74 menuItem.setMnemonic(KeyEvent.VK_D);
samer@1 75 menuItem.addActionListener(this);
samer@1 76 menu.add(menuItem);
samer@1 77
samer@1 78 //a group of radio button menu items
samer@1 79 menu.addSeparator();
samer@1 80 ButtonGroup group = new ButtonGroup();
samer@1 81 rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
samer@1 82 rbMenuItem.setSelected(true);
samer@1 83 rbMenuItem.setMnemonic(KeyEvent.VK_R);
samer@1 84 group.add(rbMenuItem);
samer@1 85 rbMenuItem.addActionListener(this);
samer@1 86 menu.add(rbMenuItem);
samer@1 87 rbMenuItem = new JRadioButtonMenuItem("Another one");
samer@1 88 rbMenuItem.setMnemonic(KeyEvent.VK_O);
samer@1 89 group.add(rbMenuItem);
samer@1 90 rbMenuItem.addActionListener(this);
samer@1 91 menu.add(rbMenuItem);
samer@1 92
samer@1 93 //a group of check box menu items
samer@1 94 menu.addSeparator();
samer@1 95 cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
samer@1 96 cbMenuItem.setMnemonic(KeyEvent.VK_C);
samer@1 97 cbMenuItem.addItemListener(this);
samer@1 98 menu.add(cbMenuItem);
samer@1 99 cbMenuItem = new JCheckBoxMenuItem("Another one");
samer@1 100 cbMenuItem.setMnemonic(KeyEvent.VK_H);
samer@1 101 cbMenuItem.addItemListener(this);
samer@1 102 menu.add(cbMenuItem);
samer@1 103
samer@1 104 //a submenu
samer@1 105 menu.addSeparator();
samer@1 106 submenu = new JMenu("A submenu");
samer@1 107 submenu.setMnemonic(KeyEvent.VK_S);
samer@1 108
samer@1 109 menuItem = new JMenuItem("An item in the submenu");
samer@1 110 menuItem.setAccelerator(KeyStroke.getKeyStroke(
samer@1 111 KeyEvent.VK_2, ActionEvent.ALT_MASK));
samer@1 112 menuItem.addActionListener(this);
samer@1 113 submenu.add(menuItem);
samer@1 114
samer@1 115 menuItem = new JMenuItem("Another item");
samer@1 116 menuItem.addActionListener(this);
samer@1 117 submenu.add(menuItem);
samer@1 118 menu.add(submenu);
samer@1 119
samer@1 120 //Build second menu in the menu bar.
samer@1 121 menu = new JMenu("Another Menu");
samer@1 122 menu.setMnemonic(KeyEvent.VK_N);
samer@1 123 menu.getAccessibleContext().setAccessibleDescription(
samer@1 124 "This menu does nothing");
samer@1 125 menuBar.add(menu);
samer@1 126 }
samer@1 127
samer@1 128 public void actionPerformed(ActionEvent e) {
samer@1 129 JMenuItem source = (JMenuItem)(e.getSource());
samer@1 130 String s = "Action event detected."
samer@1 131 + newline
samer@1 132 + " Event source: " + source.getText()
samer@1 133 + " (an instance of " + getClassName(source) + ")";
samer@1 134 output.append(s + newline);
samer@1 135 }
samer@1 136
samer@1 137 public void itemStateChanged(ItemEvent e) {
samer@1 138 JMenuItem source = (JMenuItem)(e.getSource());
samer@1 139 String s = "Item event detected."
samer@1 140 + newline
samer@1 141 + " Event source: " + source.getText()
samer@1 142 + " (an instance of " + getClassName(source) + ")"
samer@1 143 + newline
samer@1 144 + " New state: "
samer@1 145 + ((e.getStateChange() == ItemEvent.SELECTED) ?
samer@1 146 "selected":"unselected");
samer@1 147 output.append(s + newline);
samer@1 148 }
samer@1 149
samer@1 150 // Returns just the class name -- no package info.
samer@1 151 protected String getClassName(Object o) {
samer@1 152 String classString = o.getClass().getName();
samer@1 153 int dotIndex = classString.lastIndexOf(".");
samer@1 154 return classString.substring(dotIndex+1);
samer@1 155 }
samer@1 156
samer@1 157 public static void main(String[] args) {
samer@1 158 MenuDemo window = new MenuDemo();
samer@1 159
samer@1 160 window.setTitle("MenuDemo");
samer@1 161 window.setSize(450, 260);
samer@1 162 window.setVisible(true);
samer@1 163 }
samer@1 164 }