Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Using Java Swing, Implement a simple integer calculator JCalculator program with

ID: 3879859 • Letter: U

Question

Using Java Swing, Implement a simple integer calculator JCalculator program with the following features: .

1. Center the calculator on the screen at startup.

2. All the operations are in the form: (operand1 operator1 operand2 =) operator2 operand3 =

3. The [C] button will clear the calculator, eg. initial state. Ctrl+Shift+[C] button combination will display “(c) 2018 your-name” Only the [C] button will restore the current display.

4. The [=] button is the default button.

5. Only allow up to 10 digits.

6. Display errors such as “Overflow”, “Div by 0”, …, and the [C] button will clear the error and reset the calculator.

7. Use JCalculator.png as the program icon.

Explanation / Answer

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class JCalculator extends JFrame implements ActionListener {

   

    JPanel[] row = new JPanel[5];

    JButton[] button = new JButton[19];

    String[] buttonString = {"7", "8", "9", "+",

                             "4", "5", "6", "-",

                             "1", "2", "3", "*",

                             ".", "/", "C", "",

                             "+/-", "=", "0"};

    int[] dimW = {300,45,100,90};

    int[] dimH = {35, 40};

    Dimension displayDimension = new Dimension(dimW[0], dimH[0]);

    Dimension regularDimension = new Dimension(dimW[1], dimH[1]);

    Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);

    Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);

    boolean[] function = new boolean[4];

    double[] temporary = {0, 0};

    JTextArea display = new JTextArea(1,20);

    Font font = new Font("Times new Roman", Font.BOLD, 14);

   

    JCalculator() {

        super("JCalculator");

        setDesign();

        setSize(380, 250);

        setResizable(false);

        setDefaultCloseOperation(EXIT_ON_CLOSE);

        GridLayout grid = new GridLayout(5,5);

        setLayout(grid);

       

        for(int i = 0; i < 4; i++)

            function[i] = false;

       

        FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);

        FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);

        for(int i = 0; i < 5; i++)

            row[i] = new JPanel();

        row[0].setLayout(f1);

        for(int i = 1; i < 5; i++)

            row[i].setLayout(f2);

       

        for(int i = 0; i < 19; i++) {

            button[i] = new JButton();

            button[i].setText(buttonString[i]);

            button[i].setFont(font);

            button[i].addActionListener(this);

        }

       

        display.setFont(font);

      display.setEditable(false);

        display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);

        display.setPreferredSize(displayDimension);

        for(int i = 0; i < 14; i++)

            button[i].setPreferredSize(regularDimension);

        for(int i = 14; i < 18; i++)

            button[i].setPreferredSize(rColumnDimension);

        button[18].setPreferredSize(zeroButDimension);

       

        row[0].add(display);

        add(row[0]);

       

        for(int i = 0; i < 4; i++)

            row[1].add(button[i]);

        row[1].add(button[14]);

        add(row[1]);

       

        for(int i = 4; i < 8; i++)

            row[2].add(button[i]);

        row[2].add(button[15]);

      add(row[2]);

       

        for(int i = 8; i < 12; i++)

            row[3].add(button[i]);

        row[3].add(button[16]);

        add(row[3]);

       

        row[4].add(button[18]);

        for(int i = 12; i < 14; i++)

            row[4].add(button[i]);

        row[4].add(button[17]);

        add(row[4]);

       

        setVisible(true);

    }

   

    public void clear() {

        try {

            display.setText("");

            for(int i = 0; i < 4; i++)

                function[i] = false;

            for(int i = 0; i < 2; i++)

                temporary[i] = 0;

        } catch(NullPointerException e) {

        }

    }

   

    public void getSqrt() {

        try {

            double value = Math.sqrt(Double.parseDouble(display.getText()));

            display.setText(Double.toString(value));

        } catch(NumberFormatException e) {

        }

    }

   

    public void getPosNeg() {

        try {

            double value = Double.parseDouble(display.getText());

            if(value != 0) {

                value = value * (-1);

                display.setText(Double.toString(value));

            }

            else {

            }

        } catch(NumberFormatException e) {

        }

    }

   

    public void getResult() {

        double result = 0;

        temporary[1] = Double.parseDouble(display.getText());

        String temp0 = Double.toString(temporary[0]);

        String temp1 = Double.toString(temporary[1]);

        try {

            if(temp0.contains("-")) {

                String[] temp00 = temp0.split("-", 2);

                temporary[0] = (Double.parseDouble(temp00[1]) * -1);

            }

            if(temp1.contains("-")) {

                String[] temp11 = temp1.split("-", 2);

              temporary[1] = (Double.parseDouble(temp11[1]) * -1);

            }

        } catch(ArrayIndexOutOfBoundsException e) {

        }

        try {

            if(function[2] == true)

                result = temporary[0] * temporary[1];

            else if(function[3] == true)

                result = temporary[0] / temporary[1];

            else if(function[0] == true)

                result = temporary[0] + temporary[1];

            else if(function[1] == true)

                result = temporary[0] - temporary[1];

            display.setText(Double.toString(result));

            for(int i = 0; i < 4; i++)

                function[i] = false;

        } catch(NumberFormatException e) {

        }

    }

   

    public final void setDesign() {

        try {

            UIManager.setLookAndFeel(

                    "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

        } catch(Exception e) {  

        }

    }

   

    @Override

    public void actionPerformed(ActionEvent ae) {

        if(ae.getSource() == button[0])

            display.append("7");

        if(ae.getSource() == button[1])

            display.append("8");

        if(ae.getSource() == button[2])

            display.append("9");

        if(ae.getSource() == button[3]) {

            //add function[0]

            temporary[0] = Double.parseDouble(display.getText());

            function[0] = true;

            display.setText("");

        }

        if(ae.getSource() == button[4])

            display.append("4");

        if(ae.getSource() == button[5])

            display.append("5");

        if(ae.getSource() == button[6])

            display.append("6");

        if(ae.getSource() == button[7]) {

            //subtract function[1]

            temporary[0] = Double.parseDouble(display.getText());

            function[1] = true;

            display.setText("");

        }

        if(ae.getSource() == button[8])

            display.append("1");

        if(ae.getSource() == button[9])

          display.append("2");

        if(ae.getSource() == button[10])

            display.append("3");

        if(ae.getSource() == button[11]) {

            //multiply function[2]

            temporary[0] = Double.parseDouble(display.getText());

            function[2] = true;

            display.setText("");

        }

        if(ae.getSource() == button[12])

            display.append(".");

        if(ae.getSource() == button[13]) {

            //divide function[3]

            temporary[0] = Double.parseDouble(display.getText());

            function[3] = true;

            display.setText("");

        }

        if(ae.getSource() == button[14])

            clear();

        if(ae.getSource() == button[15])

            getSqrt();

        if(ae.getSource() == button[16])

            getPosNeg();

        if(ae.getSource() == button[17])

            getResult();

        if(ae.getSource() == button[18])

            display.append("0");

    }

   

    public static void main(String[] arguments) {

        JCalculator c = new JCalculator();

    }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote