Source:

// John Hiew CS111
// Question 7.8
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class q78 extends Applet implements ActionListener
{
private Panel functionPanel, numberPanel;
private Button ClearBtn, AddBtn, SubBtn, EquBtn;
private Button ZeroBtn, OneBtn, TwoBtn, ThreeBtn, FourBtn, FiveBtn,
SixBtn, SevenBtn, EightBtn, NineBtn;
private Label LineLbl;
private int NO_OP = 0, ADD_OP = 11, SUB_OP = 22;
private boolean add_op, sub_op, equ_op;
private String NumStr;
private int operator;
private int result;

public void init()
{
setLayout (null);

functionPanel = new Panel();
numberPanel = new Panel();

ClearBtn = new Button ("Clear");
addButton (ClearBtn, functionPanel);
AddBtn = new Button ("+");
addButton (AddBtn, functionPanel);
SubBtn = new Button ("-");
addButton (SubBtn, functionPanel);
EquBtn = new Button ("=");
addButton (EquBtn, functionPanel);

ZeroBtn = new Button ("0");
addButton (ZeroBtn, numberPanel);
OneBtn = new Button ("1");
addButton (OneBtn, numberPanel);
TwoBtn = new Button ("2");
addButton (TwoBtn, numberPanel);
ThreeBtn = new Button ("3");
addButton (ThreeBtn, numberPanel);
FourBtn = new Button ("4");
addButton (FourBtn, numberPanel);
FiveBtn = new Button ("5");
addButton (FiveBtn, numberPanel);
SixBtn = new Button ("6");
addButton (SixBtn, numberPanel);
SevenBtn = new Button ("7");
addButton (SevenBtn, numberPanel);
EightBtn = new Button ("8");
addButton (EightBtn, numberPanel);
NineBtn = new Button ("9");
addButton (NineBtn, numberPanel);

add (functionPanel);
functionPanel.setBounds (0, 0, 120, 60);
add (numberPanel);
numberPanel.setBounds (0, 80, 120, 90);

LineLbl = new Label ("-----------------------------------");
add (LineLbl);
LineLbl.setBounds (0, 65, 120, 10);

NumStr = new String();
}

public void paint (Graphics g)
{
Calculate();

g.drawString (NumStr, 20, 200);

if (add_op == true || sub_op == true)
{
add_op = sub_op = false;
NumStr = "";
}
else if (equ_op == true)
{
equ_op = false;
operator = NO_OP;
result = 0;
NumStr = "";
}
}

public void actionPerformed (ActionEvent e)
{
if (e.getSource() == ZeroBtn)
{
NumStr += "0";
}
else if (e.getSource() == OneBtn)
{
NumStr += "1";
}
else if (e.getSource() == TwoBtn)
{
NumStr += "2";
}
else if (e.getSource() == ThreeBtn)
{
NumStr += "3";
}
else if (e.getSource() == FourBtn)
{
NumStr += "4";
}
else if (e.getSource() == FiveBtn)
{
NumStr += "5";
}
else if (e.getSource() == SixBtn)
{
NumStr += "6";
}
else if (e.getSource() == SevenBtn)
{
NumStr += "7";
}
else if (e.getSource() == EightBtn)
{
NumStr += "8";
}
else if (e.getSource() == NineBtn)
{
NumStr += "9";
}
else if (e.getSource() == ClearBtn)
{
NumStr = "";
result = 0;
equ_op = false;
}
else if (e.getSource() == AddBtn)
{
add_op = true;
}
else if (e.getSource() == SubBtn)
{
sub_op = true;
}
else if (e.getSource() == EquBtn)
{
equ_op = true;
}

repaint();
}

private void addButton (Button b, Panel p)
{
b.addActionListener (this);
p.add (b);
}

private void Calculate()
{
if (equ_op == false)
{
if (add_op == true)
{
if (operator == ADD_OP)
result += Integer.parseInt (NumStr);
else if (operator == SUB_OP)
result -= Integer.parseInt (NumStr);
else
result = Integer.parseInt (NumStr);

NumStr = Integer.toString (result);
operator = ADD_OP;
}
else if (sub_op == true)
{
if (operator == SUB_OP)
result -= Integer.parseInt (NumStr);
else if (operator == ADD_OP)
result += Integer.parseInt (NumStr);
else
result = Integer.parseInt (NumStr);

NumStr = Integer.toString (result);
operator = SUB_OP;
}
}
else
{
if (operator == ADD_OP)
result += Integer.parseInt (NumStr);
else if (operator == SUB_OP)
result -= Integer.parseInt (NumStr);

NumStr = Integer.toString (result);
}
}
}