Mercurial > hg > jslab
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 } |