Minicalculator
Minicalculator
No: 03
MINI CALCULATOR
Aim:
To develop a java swing-based mini calculator application that allows user to perform basic arithmetic
operations and manage input .
Algorithm:
Step-1: Create a JFrame object to serve as the window for the calculator application with “BorderLayout”
to organize components.
Step-2: Initialize numeric buttons (0-9) and operator buttons (“+”,”-” etc) and organize them using
“GridLayout”.
Step-3: Add “ActionListener ” to the buttons to handle user clicks.
Step-4: Append the numeric values to the display field.
Step-5: Capture operators and operands for calculations.
Step-6: Display the result when “=” button is clicked.
Step-7: Instantiate the class in “main” method to run the application.
Program:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MiniCalculator extends JFrame implements ActionListener {
private JTextField display;
private JButton[] numButtons;
private JButton[] opButtons;
private JButton clearButton, equalsButton, backButton;
private double num1, num2;
private char operator;
Font myFont = new Font("Times new roman",Font.BOLD,25);
public MiniCalculator() {
setTitle("Calculator");
setSize(420, 520);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
display = new JTextField(30);
display.setEditable(false);
display.setFont(new Font("Arial", Font.BOLD, 30));
display.setHorizontalAlignment(JTextField.RIGHT);
display.setBackground(Color.BLUE);
display.setForeground(Color.WHITE);
display.setBorder(BorderFactory.createEmptyBorder(60, 10, 10, 30));
add(display, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(6, 3, 5, 5));
buttonPanel.setBackground(Color.BLUE);
numButtons = new JButton[10];
for (int i = 9; i >= 0; i--) {
numButtons[i] = new JButton(String.valueOf(i));
numButtons[i].setFont(myFont);
numButtons[i].addActionListener(this);
buttonPanel.add(numButtons[i]);
}
opButtons = new JButton[5];
String[] opSymbols = {"+", "-", "*", "/", "%"};
for (int i = 0; i < 5; i++) {
opButtons[i] = new JButton(opSymbols[i]);
opButtons[i].setFont(myFont);
opButtons[i].addActionListener(this);
buttonPanel.add(opButtons[i]);
}
clearButton = new JButton("C");
clearButton.setFont(myFont);
clearButton.addActionListener(this);
buttonPanel.add(clearButton);
equalsButton = new JButton("=");
equalsButton.setFont(myFont);
equalsButton.addActionListener(this);
buttonPanel.add(equalsButton);
backButton = new JButton("<=");
backButton.setFont(myFont);
backButton.addActionListener(this);
buttonPanel.add(backButton);
add(buttonPanel, BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (Character.isDigit(command.charAt(0))) {
display.setText(display.getText() + command);
} else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")
|| command.equals("%")) {
num1 = Double.parseDouble(display.getText());
operator = command.charAt(0);
display.setText("");
} else if (command.equals("=")) {
num2 = Double.parseDouble(display.getText());
double result = calculateResult(num1, num2, operator);
display.setText(String.valueOf(result));
} else if (command.equals("C")) {
display.setText("");
}else if (command.equals("<=")) {
String currentText = display.getText();
if (!currentText.isEmpty()) {
display.setText(currentText.substring(0, currentText.length() - 1));
}
}
}
private double calculateResult(double num1, double num2, char operator) {
switch (operator) {
case '+':
return num1 + num2;
case '-':
return num1 - num2;
case '*':
return num1 * num2;
case '/':
if (num2 == 0) {
JOptionPane.showMessageDialog(this, "Error: Division by zero");
return 0;
}
return num1 / num2;
case '%':
return num1 % num2;
default:
return 0;
}
}
public static void main(String[] args) {
new MiniCalculator();
}
}
Output:
Result:
Thus, the java swing based mini-calculator application that allows user to perform basic arithmetic
operations was executed successfully and the output was verified.