|
| 1 | +/* |
| 2 | +By Rustam Zokirov, |
| 3 | +U190049 |
| 4 | +Lab: #6 |
| 5 | +Calculator Application |
| 6 | +*/ |
| 7 | + |
| 8 | +// import some libraries |
| 9 | +import javax.swing.*; |
| 10 | +import java.awt.*; |
| 11 | +import java.awt.event.*; |
| 12 | + |
| 13 | +public class Calculator extends JFrame { |
| 14 | + JTextField jtxtField = new JTextField(); // text field |
| 15 | + JButton jbt0Button = new JButton("0"); // some buttons from 0-9 |
| 16 | + JButton jbt1Button = new JButton("1"); |
| 17 | + JButton jbt2Button = new JButton("2"); |
| 18 | + JButton jbt3Button = new JButton("3"); |
| 19 | + JButton jbt4Button = new JButton("4"); |
| 20 | + JButton jbt5Button = new JButton("5"); |
| 21 | + JButton jbt6Button = new JButton("6"); |
| 22 | + JButton jbt7Button = new JButton("7"); |
| 23 | + JButton jbt8Button = new JButton("8"); |
| 24 | + JButton jbt9Button = new JButton("9"); |
| 25 | + JButton jbtDeleteButton = new JButton("/"); // operations |
| 26 | + JButton jbtMultiplyButton = new JButton("*"); |
| 27 | + JButton jbtMinusButton = new JButton("-"); |
| 28 | + JButton jbtPlusButton = new JButton("+"); |
| 29 | + JButton jbtEqualButton = new JButton("="); |
| 30 | + JButton jbtDotButton = new JButton("."); |
| 31 | + |
| 32 | + public Calculator() { |
| 33 | + // Panel for the text field |
| 34 | + JPanel panel_text = new JPanel(); |
| 35 | + panel_text.setLayout(new BorderLayout()); // implementing BorderLayout |
| 36 | + panel_text.add(jtxtField, BorderLayout.NORTH); |
| 37 | + |
| 38 | + // Create a panel to hold buttons |
| 39 | + JPanel panel = new JPanel(); |
| 40 | + panel.setLayout(new GridLayout(4, 4)); // implementing GridLayout 4 by 4 |
| 41 | + panel.add(jbt7Button); |
| 42 | + panel.add(jbt8Button); |
| 43 | + panel.add(jbt9Button); |
| 44 | + panel.add(jbtDeleteButton); |
| 45 | + panel.add(jbt4Button); |
| 46 | + panel.add(jbt5Button); |
| 47 | + panel.add(jbt6Button); |
| 48 | + panel.add(jbtMultiplyButton); |
| 49 | + panel.add(jbt1Button); |
| 50 | + panel.add(jbt2Button); |
| 51 | + panel.add(jbt3Button); |
| 52 | + panel.add(jbtMinusButton); |
| 53 | + panel.add(jbt0Button); |
| 54 | + panel.add(jbtDotButton); |
| 55 | + panel.add(jbtEqualButton); |
| 56 | + panel.add(jbtPlusButton); |
| 57 | + |
| 58 | + panel_text.add(panel, BorderLayout.CENTER); |
| 59 | + add(panel_text); // Add panel to the frame |
| 60 | + |
| 61 | + // Register listeners |
| 62 | + ListenerClass listener = new ListenerClass(); |
| 63 | + jbt0Button.addActionListener(listener); |
| 64 | + jbt1Button.addActionListener(listener); |
| 65 | + jbt2Button.addActionListener(listener); |
| 66 | + jbt3Button.addActionListener(listener); |
| 67 | + jbt4Button.addActionListener(listener); |
| 68 | + jbt5Button.addActionListener(listener); |
| 69 | + jbt6Button.addActionListener(listener); |
| 70 | + jbt7Button.addActionListener(listener); |
| 71 | + jbt8Button.addActionListener(listener); |
| 72 | + jbt9Button.addActionListener(listener); |
| 73 | + jbtPlusButton.addActionListener(listener); |
| 74 | + jbtMinusButton.addActionListener(listener); |
| 75 | + jbtMultiplyButton.addActionListener(listener); |
| 76 | + jbtDeleteButton.addActionListener(listener); |
| 77 | + jbtEqualButton.addActionListener(listener); |
| 78 | + jbtDotButton.addActionListener(listener); |
| 79 | + } |
| 80 | + |
| 81 | + public static void main(String[] args) { |
| 82 | + JFrame frame = new Calculator(); // creating object |
| 83 | + frame.setTitle("Handle Event"); |
| 84 | + frame.setSize(200, 200); // set size |
| 85 | + frame.setLocation(200, 100); // set location in window |
| 86 | + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
| 87 | + frame.setVisible(true); |
| 88 | + } |
| 89 | + |
| 90 | + // ListenerClass - Inner Class for handing the actions |
| 91 | + class ListenerClass implements ActionListener { |
| 92 | + char operation; // operation |
| 93 | + double num1; // number 1 |
| 94 | + double num2; // number 2 |
| 95 | + double result; // result |
| 96 | + |
| 97 | + public void actionPerformed(ActionEvent e) { |
| 98 | + // handle the text field |
| 99 | + if (e.getSource() == jbt0Button) |
| 100 | + jtxtField.setText(jtxtField.getText() + '0'); |
| 101 | + else if (e.getSource() == jbt1Button) |
| 102 | + jtxtField.setText(jtxtField.getText() + '1'); |
| 103 | + else if (e.getSource() == jbt2Button) |
| 104 | + jtxtField.setText(jtxtField.getText() + '2'); |
| 105 | + else if (e.getSource() == jbt3Button) |
| 106 | + jtxtField.setText(jtxtField.getText() + '3'); |
| 107 | + else if (e.getSource() == jbt5Button) |
| 108 | + jtxtField.setText(jtxtField.getText() + '5'); |
| 109 | + else if (e.getSource() == jbt6Button) |
| 110 | + jtxtField.setText(jtxtField.getText() + '6'); |
| 111 | + else if (e.getSource() == jbt7Button) |
| 112 | + jtxtField.setText(jtxtField.getText() + '7'); |
| 113 | + else if (e.getSource() == jbt8Button) |
| 114 | + jtxtField.setText(jtxtField.getText() + '8'); |
| 115 | + else if (e.getSource() == jbt9Button) |
| 116 | + jtxtField.setText(jtxtField.getText() + '9'); |
| 117 | + else if (e.getSource() == jbtDotButton) |
| 118 | + jtxtField.setText(jtxtField.getText() + '.'); |
| 119 | + else if (e.getSource() == jbtPlusButton) { |
| 120 | + operation = '+'; |
| 121 | + num1 = Double.parseDouble(jtxtField.getText()); |
| 122 | + jtxtField.setText(""); |
| 123 | + } |
| 124 | + else if (e.getSource() == jbtMinusButton) { |
| 125 | + operation = '-'; |
| 126 | + num1 = Double.parseDouble(jtxtField.getText()); |
| 127 | + jtxtField.setText(""); |
| 128 | + } |
| 129 | + else if (e.getSource() == jbtMultiplyButton) { |
| 130 | + operation = '*'; |
| 131 | + num1 = Double.parseDouble(jtxtField.getText()); |
| 132 | + jtxtField.setText(""); |
| 133 | + } |
| 134 | + else if (e.getSource() == jbtDeleteButton) { |
| 135 | + operation = '/'; |
| 136 | + num1 = Double.parseDouble(jtxtField.getText()); |
| 137 | + jtxtField.setText(""); |
| 138 | + } |
| 139 | + else if (e.getSource() == jbtEqualButton) { |
| 140 | + num2 = Double.parseDouble(jtxtField.getText()); |
| 141 | + |
| 142 | + // handle calculation |
| 143 | + if (operation == '+') |
| 144 | + result = num1 + num2; |
| 145 | + else if (operation == '-') |
| 146 | + result = num1 - num2; |
| 147 | + else if (operation == '*') |
| 148 | + result = num1 * num2; |
| 149 | + else if (operation == '/') |
| 150 | + result = num1 / num2; |
| 151 | + |
| 152 | + jtxtField.setText(Double.toString(result)); // ouput the resust |
| 153 | + } |
| 154 | + } |
| 155 | + } // ListenerClass |
| 156 | +} // Calculator |
0 commit comments