Home Java Example Java Swing Writing Calculator Program in Swing



Writing Calculator Program in Swing
Posted on: September 12, 2008 at 12:00 AM
In this tutorial we are providing you an example which illustrates you how to a create calculator in Swing with the source code and screen shot.

Writing Calculator Program in Swing

     

In this tutorial we are providing you an example which illustrates you how to a create calculator in Swing with the source code and screen shot.

For developing a small calculator program in swing we need two different classes 

1) SwingCalculator.java
2) Calculator.java

The SwingCalculator.java calls the Calculator.java class by JFrame frame = new Calculator(). All the methods and actions are to be performed in Calculator.java class.

Calculator Code in Java Swing



Please save the code as SwingCalculator.java

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

class SwingCalculator {
 public static void main(String[] args) {
  JFrame frame = new Calculator();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
  }
}


Here is the code of Calculator.java

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

  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(); 

  public Calculator() {
  textfield = new JTextField("0"12);
  textfield.setHorizontalAlignment(JTextField.RIGHT);
  textfield.setFont(BIGGER_FONT);
  
  ActionListener numberListener = new NumberListener();
  String buttonOrder = "1234567890 ";
  JPanel buttonPanel = new JPanel();
  buttonPanel.setLayout(new GridLayout(4444));
  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);
  }
  }
  ActionListener operatorListener = new OperatorListener();
  JPanel panel = new JPanel();
  panel.setLayout(new GridLayout(4444));
  String[] opOrder = {"+""-""*""/","=","C"};
 for (int i = 0; i < opOrder.length; i++) {
  JButton button = new JButton(opOrder[i]);
  button.addActionListener(operatorListener);
  button.setFont(BIGGER_FONT);
  panel.add(button);
  }
 JPanel pan = new JPanel();
  pan.setLayout(new BorderLayout(44));
  pan.add(textfield, BorderLayout.NORTH );
  pan.add(buttonPanel , BorderLayout.CENTER);
  pan.add(panel , BorderLayout.EAST  );
  this.setContentPane(pan);
  this.pack();
  this.setTitle("Calculator");
  this.setResizable(false);
  }
  private void action() {
  number = true
  textfield.setText("0");
  equalOp  = "=";
  op.setTotal("0");
  }
  class OperatorListener implements ActionListener {
  public void actionPerformed(ActionEvent e) {
  if (number) {
  action();
  textfield.setText("0");
  else {
  number = true
  String displayText = textfield.getText();
  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);
  }
 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);
  }
 private int convertToNumber(String n) {
  return Integer.parseInt(n);
  }
}
}

 
The constructor new CalculatorOp() calls the CalculatorOp class. The Swing component JTextField is used to create textbox on which calculation is to be performed. JPanel arranges the numeric buttons in a panel. JButton is used to perform an action. OperatorListener class is called to perform action on operators, i.e, '+,-,*,/,='. The class NumberListener is called for numbers 0 to 9.


Output will be displayed as:


Download Source Code

Related Tags for Writing Calculator Program in Swing:
cswingscreenvitutorialsourceriathisidcreateexamplewithtoexamshcalculatoreilitulceincalcalcmtrcaesrchowprorateratestorxawhichxampssoeeatisllmpleaandarcodcodestrwingtutorscrssrithshoswstpleplprndodeo


More Tutorials from this section

Ask Questions?    Discuss: Writing Calculator Program in Swing   View All Comments

Post your Comment


Your Name (*) :
Your Email :
Subject (*):
Your Comment (*):
  Reload Image
 
 

Ask Questions?

If you are facing any programming issue, such as compilation errors or not able to find the code you are looking for.

Ask your questions, our development team will try to give answers to your questions.