Java program to design simple calculator with the use of gridlayout

Simple Calculator Program in Java Using AWT (Grid Layout)

Aim:

To write a Java program that works as a simple calculator. Use a grid layout to arrange buttons for the digits and for the +, -, *, % operations. Add a text field to display the result.

Source Code: Java Gridlayout Example

//import package to create simple calculator 
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class Week9 extends Frame implements ActionListener
{
int i=0,temp=0;
char a;
float stk[];
int top;
TextField t;
Button dot,mod,b,one,two,three,four,five,six,seven,eight,nine,
zero,add,sub,mul,div,eq,sine,sqrt,cbrt;
GridBagConstraints gc;
Week9()
{
super("My Calculator");
stk=new float[20];
top=-1;
gc=new GridBagConstraints(); //creating gridlayout
//creating textfield and button on simple calculator
t=new TextField("");
b=new Button("Reset");
one=new Button(" 1 ");
two=new Button(" 2 ");
three=new Button(" 3 ");
four=new Button(" 4 ");
five=new Button(" 5 ");
six=new Button(" 6 ");
seven=new Button(" 7 ");
eight=new Button(" 8 ");
nine=new Button(" 9 ");
zero=new Button(" 0 ");
add=new Button(" + ");
sub=new Button(" - ");
mul=new Button(" * ");
div=new Button(" / ");
eq=new Button(" = ");
dot=new Button("...");
mod=new Button(" % ");
sine=new Button(" sin ");
sqrt=new Button(" sqrt ");
cbrt=new Button(" cbrt ");
setSize(250,250);
setLocation(500,200);
setLayout(new GridBagLayout());
addcomp(one,1,1,1,1);
addcomp(two,1,2,1,1);
addcomp(three,1,3,1,1);
addcomp(four,1,4,1,1);
addcomp(five,2,1,1,1);
addcomp(six,2,2,1,1);
addcomp(seven,2,3,1,1);
addcomp(eight,2,4,1,1);
addcomp(nine,3,1,1,1);
addcomp(zero,3,2,1,1);
addcomp(mul,3,3,1,1);
addcomp(div,3,4,1,1);
addcomp(add,4,1,1,1);
addcomp(sub,4,2,1,1);
addcomp(eq,4,3,1,1);
addcomp(mod,4,4,1,1);
addcomp(dot,5,1,1,1);
addcomp(sine,5,2,1,1);
addcomp(sqrt,5,3,1,1);
addcomp(cbrt,5,4,1,1);
addcomp(new Label(""),7,1,4,1);
addcomp(t,8,1,4,1);
addcomp(new Label(""),9,1,4,1);
addcomp(b,10,2,2,1);
setVisible(true);
one.addActionListener(this);
two.addActionListener(this);
three.addActionListener(this);
four.addActionListener(this);
five.addActionListener(this);
six.addActionListener(this);
seven.addActionListener(this);
eight.addActionListener(this);
nine.addActionListener(this);
zero.addActionListener(this);
mul.addActionListener(this);
div.addActionListener(this);
add.addActionListener(this);
sub.addActionListener(this);
eq.addActionListener(this);
mod.addActionListener(this);
dot.addActionListener(this);
sine.addActionListener(this);
sqrt.addActionListener(this);
cbrt.addActionListener(this);
b.addActionListener(this);
}
public void addcomp(Component cc,int r,int c,int w,int h)
{
gc.gridx=c;
gc.gridy=r;
gc.gridwidth=w;
gc.gridheight=h;
gc.fill=gc.BOTH;
add(cc,gc);
}
// performing action on simple calculator
public void actionPerformed(ActionEvent ae)
{ // comparing input value in simple calculator
if(ae.getSource()==b)
{
t.setText("");
}
if(ae.getSource()==one)
{
if(temp==1)
func();
t.setText(t.getText()+"1");
}
if(ae.getSource()==two)
{
if(temp==1)
func();
t.setText(t.getText()+"2");
}
if(ae.getSource()==three)
{
if(temp==1)
func();
t.setText(t.getText()+"3");
}
if(ae.getSource()==four)
{
if(temp==1)
func();
t.setText(t.getText()+"4");
}
if(ae.getSource()==five)
{
if(temp==1)
func();
t.setText(t.getText()+"5");
}
if(ae.getSource()==six)
{
if(temp==1)
func();
t.setText(t.getText()+"6");
}
if(ae.getSource()==seven)
{
if(temp==1)
func();
t.setText(t.getText()+"7");
}
if(ae.getSource()==eight)
{
if(temp==1)
func();
t.setText(t.getText()+"8");
}
if(ae.getSource()==nine)
{
t.setText(t.getText()+"9");
if(temp==1)
func();
}
if(ae.getSource()==zero)
{
t.setText(t.getText()+"0");
if(temp==1)
func();
}
if(ae.getSource()==add||ae.getSource()==sub||ae.getSource()==mul||
ae.getSource()==div||ae.getSource()==mod||ae.getSource()==sqrt||
ae.getSource()==cbrt||ae.getSource()==sine)
{
String s;
s=t.getText();
float num1=0,num2=0,num3=0;
float n=Float.parseFloat(s);
push(n);
if(ae.getSource()==add)
a='+';
if(ae.getSource()==sub)
a='-';
if(ae.getSource()==mul)
a='*';
if(ae.getSource()==div)
a='/';
if(ae.getSource()==mod)
a='%';
t.setText("");
if(ae.getSource()==sqrt)
{
double num=pop();
t.setText(Double.toString(Math.sqrt(num)));
}
if(ae.getSource()==cbrt)
{
double num=pop();
t.setText(Double.toString(Math.cbrt(num)));
}
if(ae.getSource()==sine)
{
double num=pop();
t.setText(Double.toString(Math.sin(num)));
}
}
if(ae.getSource()==eq)
{
float num1=0,num2=0,num3=0,temp1;
String s=t.getText();
float n=Float.parseFloat(s);
push(n);
num1=pop();
num2=pop();
switch(a)
{
// perform arithmetic operation
case '+' : num3=num1+num2;push(num3);break;
case '-' : num3=num2-num1;push(num3);break;
case '*' : num3=num1*num2;push(num3);break;
case '/' : num3=num2/num1;push(num3);break;
case '%' : num3=num2%num1;push(num3);break;
}
if(i==1)
{
t.setText(Float.toString(num3));
i=0;
}
else
t.setText(Integer.toString((int)num3));
temp=1;
}
if(ae.getSource()==dot)
{
i=1;
t.setText(t.getText()+".");
}
}
public void push(float a)
{
top++;
stk[top]=a;
}
public float pop()
{
float num=stk[top];
top--;
return(num);
}
public void func()
{
t.setText("");
temp=0;
}
public static void main(String rr[])throws Exception
{
new Week9();
}
}

Output of simple calculator:

Java program to design simple calculator with the use of gridlayout

Recommended Post:

Find the solution to the salesforce Question and many more

Pramod Kumar Yadav is from Janakpur Dham, Nepal. He was born on December 23, 1994, and has one elder brother and two elder sisters. He completed his education at various schools and colleges in Nepal and completed a degree in Computer Science Engineering from MITS in Andhra Pradesh, India. Pramod has worked as the owner of RC Educational Foundation Pvt Ltd, a teacher, and an Educational Consultant, and is currently working as an Engineer and Digital Marketer.



Leave a Comment