1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4
5 public class MenuDemo extends JApplet {
6
7 private JTextField jtfNum1, jtfNum2, jtfResult;
8
9
10 private JButton jbtAdd, jbtSub, jbtMul, jbtDiv;
11
12
13 private JMenuItem jmiAdd, jmiSub, jmiMul, jmiDiv, jmiClose;
14
15 public MenuDemo() {
16
17 JMenuBar jmb = new JMenuBar();
18
19
20 setJMenuBar(jmb);
21
22
23 JMenu operationMenu = new JMenu("Operation");
24 operationMenu.setMnemonic('O');
25 jmb.add(operationMenu);
26
27
28 JMenu exitMenu = new JMenu("Exit");
29 exitMenu.setMnemonic('E');
30 jmb.add(exitMenu);
31
32
33 operationMenu.add(jmiAdd= new JMenuItem("Add", 'A'));
34 operationMenu.add(jmiSub = new JMenuItem("Subtract", 'S'));
35 operationMenu.add(jmiMul = new JMenuItem("Multiply", 'M'));
36 operationMenu.add(jmiDiv = new JMenuItem("Divide", 'D'));
37 exitMenu.add(jmiClose = new JMenuItem("Close", 'C'));
38
39
40 jmiAdd.setAccelerator(
41 KeyStroke.getKeyStroke(KeyEvent.VK_A, ActionEvent.CTRL_MASK));
42 jmiSub.setAccelerator(
43 KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
44 jmiMul.setAccelerator(
45 KeyStroke.getKeyStroke(KeyEvent.VK_M, ActionEvent.CTRL_MASK));
46 jmiDiv.setAccelerator(
47 KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
48
49
50 JPanel p1 = new JPanel(new FlowLayout());
51 p1.add(new JLabel("Number 1"));
52 p1.add(jtfNum1 = new JTextField(3));
53 p1.add(new JLabel("Number 2"));
54 p1.add(jtfNum2 = new JTextField(3));
55 p1.add(new JLabel("Result"));
56 p1.add(jtfResult = new JTextField(4));
57 jtfResult.setEditable(false);
58
59
60 JPanel p2 = new JPanel(new FlowLayout());
61 p2.add(jbtAdd = new JButton("Add"));
62 p2.add(jbtSub = new JButton("Subtract"));
63 p2.add(jbtMul = new JButton("Multiply"));
64 p2.add(jbtDiv = new JButton("Divide"));
65
66
67 setLayout(new BorderLayout());
68 add(p1, BorderLayout.CENTER);
69 add(p2, BorderLayout.SOUTH);
70
71
72 jbtAdd.addActionListener(new ActionListener() {
73 @Override
74 public void actionPerformed(ActionEvent e) {
75 calculate('+');
76 }
77 });
78 jbtSub.addActionListener(new ActionListener() {
79 @Override
80 public void actionPerformed(ActionEvent e) {
81 calculate('-');
82 }
83 });
84 jbtMul.addActionListener(new ActionListener() {
85 @Override
86 public void actionPerformed(ActionEvent e) {
87 calculate('*');
88 }
89 });
90 jbtDiv.addActionListener(new ActionListener() {
91 @Override
92 public void actionPerformed(ActionEvent e) {
93 calculate('/');
94 }
95 });
96 jmiAdd.addActionListener(new ActionListener() {
97 @Override
98 public void actionPerformed(ActionEvent e) {
99 calculate('+');
100 }
101 });
102 jmiSub.addActionListener(new ActionListener() {
103 @Override
104 public void actionPerformed(ActionEvent e) {
105 calculate('-');
106 }
107 });
108 jmiMul.addActionListener(new ActionListener() {
109 @Override
110 public void actionPerformed(ActionEvent e) {
111 calculate('*');
112 }
113 });
114 jmiDiv.addActionListener(new ActionListener() {
115 @Override
116 public void actionPerformed(ActionEvent e) {
117 calculate('/');
118 }
119 });
120 jmiClose.addActionListener(new ActionListener() {
121 @Override
122 public void actionPerformed(ActionEvent e) {
123 System.exit(1);
124 }
125 });
126 }
127
128
129 private void calculate(char operator) {
130
131 int num1 = (Integer.parseInt(jtfNum1.getText().trim()));
132 int num2 = (Integer.parseInt(jtfNum2.getText().trim()));
133 int result = 0;
134
135
136 switch (operator) {
137 case '+': result = num1 + num2;
138 break;
139 case '-': result = num1 - num2;
140 break;
141 case '*': result = num1 * num2;
142 break;
143 case '/': result = num1 / num2;
144 }
145
146
147 jtfResult.setText(String.valueOf(result));
148 }
149
150 public static void main(String[] args) {
151 MenuDemo applet = new MenuDemo();
152 JFrame frame = new JFrame();
153 //EXIT_ON_CLOSE == 3
154 frame.setDefaultCloseOperation(3);
155 frame.setTitle("MenuDemo");
156 frame.getContentPane().add(applet, BorderLayout.CENTER);
157 applet.init();
158 applet.start();
159 frame.setSize(400,320);
160 frame.setLocationRelativeTo(null);
161 frame.setVisible(true);
162 }
163 }