0% found this document useful (0 votes)
49 views5 pages

Calculator

This document defines a Java class called Calculator that creates a graphical user interface (GUI) for a scientific calculator application. The Calculator class extends JFrame and contains methods to initialize the calculator display, number buttons, operator buttons, and handle button click events to perform calculations. It uses other classes like CalculatorOp to manage calculations and NumberListener/OperatorListener to handle button click events. The main method creates an instance of the Calculator class to launch the application.

Uploaded by

Juan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views5 pages

Calculator

This document defines a Java class called Calculator that creates a graphical user interface (GUI) for a scientific calculator application. The Calculator class extends JFrame and contains methods to initialize the calculator display, number buttons, operator buttons, and handle button click events to perform calculations. It uses other classes like CalculatorOp to manage calculations and NumberListener/OperatorListener to handle button click events. The main method creates an instance of the Calculator class to launch the application.

Uploaded by

Juan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

import java.awt.

*;
import java.awt.event.*;
import javax.swing.*;
import java.math.BigInteger;

class Calculator extends JFrame {


private final Font BIGGER_FONT = new Font("monspaced",Font.PLAIN, 20);
private JTextField textfield;
private boolean number = true;
private String equalOp = "=";
private CalculatorOp op = new CalculatorOp();
private final Font INPUT_FONT = new Font("helvitica",Font.BOLD,25);

public Calculator() {
textfield = new JTextField("", 10);
textfield.setHorizontalAlignment(JTextField.RIGHT);
textfield.setFont(INPUT_FONT);
textfield.setPreferredSize( new Dimension( 8, 150 ) );
textfield.setBackground(Color.decode("#353C51"));
textfield.setForeground(Color.WHITE);
textfield.setOpaque(true);
ActionListener numberListener = new NumberListener();
String buttonOrder = "123456789.0-";
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4, 4, 4));
buttonPanel.setBackground(Color.decode("#353C51"));
//buttonPanel.setForeground(Color.WHITE);
buttonPanel.setOpaque(true);

for (int i = 0; i < buttonOrder.length(); i++) {


String key = buttonOrder.substring(i, i+1);
if (key.equals(" ")) {
buttonPanel.add(new JLabel(""));
} else {
JButton button = new JButton(key);
button.addActionListener(numberListener);
button.setFont(BIGGER_FONT);
buttonPanel.add(button);
button.setBackground(Color.decode("#506680"));
button.setForeground(Color.WHITE);
button.setOpaque(true);
}
}
ActionListener operatorListener = new OperatorListener();
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(5, 5, 5, 5));
String[] opOrder = {"clr","=","+", "-", "*",
"/","abs","⌈x⌉","⌊x⌋","sin","cos","log","√","³√","rnd","%","exp","x²","x³","N!","Σ"
};
for (int i = 0; i < opOrder.length; i++) {
JButton button = new JButton(opOrder[i]);
button.addActionListener(operatorListener);
button.setFont(BIGGER_FONT);
button.setBackground(Color.decode("#2F4562"));
button.setForeground(Color.WHITE);
button.setOpaque(true);

panel.add(button);
panel.setBackground(Color.decode("#353C51"));
panel.setOpaque(true);

}
JPanel pan = new JPanel();
pan.setLayout(new BorderLayout(4, 4));
pan.add(textfield, BorderLayout.NORTH );
pan.add(buttonPanel , BorderLayout.CENTER);
pan.add(panel , BorderLayout.EAST);
pan.setBackground(Color.decode("#353C51"));
pan.setOpaque(true);
pan.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
this.setContentPane(pan);
this.pack();
this.setTitle("Advance Calculator IVOS +6");
this.setResizable(false);
}
private void action() {
number = true;
textfield.setText("");
equalOp = "=";
op.setTotal("");
}
class OperatorListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String displayText = textfield.getText();
if (e.getActionCommand().equals("sin"))
{
textfield.setText("" +
Math.sin(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("cos"))
{
textfield.setText("" +
Math.cos(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("log"))
{
textfield.setText("" +
Math.log(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("√"))
{
textfield.setText("" +
Math.sqrt(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("⌈x⌉"))
{
textfield.setText("" +
Math.ceil(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("⌊x⌋"))
{
textfield.setText("" +
Math.floor(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("abs"))
{
textfield.setText("" +
Math.abs(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("³√"))
{
textfield.setText("" +
Math.cbrt(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("rnd"))
{
textfield.setText("" +
Math.round(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("exp"))
{
textfield.setText("" +
Math.exp(Double.valueOf(displayText).doubleValue()));

}
else
if (e.getActionCommand().equals("x²"))
{
textfield.setText("" +
Math.pow(Double.valueOf(displayText).doubleValue(), 2));

}
else
if (e.getActionCommand().equals("x³"))
{
textfield.setText("" +
Math.pow(Double.valueOf(displayText).doubleValue(), 3));

else
if (e.getActionCommand().equals("N!"))
{
BigInteger fact= BigInteger.ONE;
int factorialNo = Integer.parseInt(displayText);

for (int i = 2; i <= factorialNo; i++) {


fact = fact.multiply(new BigInteger(String.valueOf(i)));
}
textfield.setText(""+ fact);
}

else
if (e.getActionCommand().equals("clr"))
{
textfield.setText("");
}

else
{
if (number)
{

action();
textfield.setText("");

}
else
{
number = true;
if (equalOp.equals("="))
{
op.setTotal(displayText);
}else if (equalOp.equals("+"))
{
op.add(displayText);
}
else if (equalOp.equals("-"))
{
op.subtract(displayText);
}
else if (equalOp.equals("*"))
{
op.multiply(displayText);
}
else if (equalOp.equals("/"))
{
op.divide(displayText);
}
else if (equalOp.equals("%"))
{
op.mod(displayText);
}

textfield.setText("" + op.getTotalString());
equalOp = e.getActionCommand();
}
}
}
}
class NumberListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String digit = event.getActionCommand();
if (number) {
textfield.setText(digit);
number = false;
} else {
textfield.setText(textfield.getText() + digit);
}
}
}
public class CalculatorOp {
private int total;
public CalculatorOp() {
total = 0;
}
public String getTotalString() {
return ""+total;
}
public void setTotal(String n) {
total = convertToNumber(n);
}
public void add(String n) {
total += convertToNumber(n);
}
public void subtract(String n) {
total -= convertToNumber(n);
}
public void multiply(String n) {
total *= convertToNumber(n);
}
public void divide(String n) {
total /= convertToNumber(n);
}
public void mod(String n) {
total %= convertToNumber(n);
}

private int convertToNumber(String n) {


return Integer.parseInt(n);
}
}
}

class SwingCalculator {
public static void main(String[] args) {
JFrame frame = new Calculator();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
//https://forgetcode.com/java/216-scientific-calculator

You might also like