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

7. Write a program that produces a GUI with the functionality and look of a hand

ID: 3690512 • Letter: 7

Question

7. Write a program that produces a GUI with the functionality and look of a handheld calculator. Your calculator should allow for addition, subtraction, multiplication, and division. It should allow you to save and later recall two different values. Use the program in Listing 13.13 as a model. If you have not studied Listing 13.13, use Listing 13.12 as a model.

Instructions

Name your java program “Calculator.java”.

LISTING 13.13 A G A GUI with Exception Handling This class is similar to the class Adder in Listing 13.I2, but deals with errors in user input by handling an exception. import javax. swing. JButton; import javax.swing. JFrame; import javax. swing. JPanel; import javax. swing. JTextField; import java.awt.Color; import java.awt.Container; import java.awt. BorderLayout; import java.awt. FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; GUI for adding a series of numbers. If the user enters a number in an incorrect format, such as 2,000 with a comma, an error message is generated and the user can restart the computation. public class ImprovedAdder extends JFrame implements ActionListener public static final int WIDTH = 400; public static final int HEIGHT 200; private JTextField inOutField; private double sum 0; public ImprovedAdder()

Explanation / Answer

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Improvedmachine extends JFrame implements ActionListener {

JPanel[] row = new JPanel[5];

JButton[] button = new JButton[19];

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

"4", "5", "6", "SUB",

"1", "2", "3", "MUL",

".", "DIV", "C", "SQRT",

"+/-", "=", "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);

Improvedmachine() {

super("Improvedmachine");

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) {

Improvedmachine c = new Improvedmachine();

}

}
note- the above code can help to answer the given question.

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