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