Project
// here we have imported java.awt for the windows or buttons which we will use in Calculator
import java.awt.*;
import java.awt.event.*;
// here we also have imported javax.swing for the use of panels or buttons
import javax.swing.*;
import javax.swing.event.*;
// here we have created class Calculator which extends JFrame and extends ActionListener
public class Calculator extends JFrame implements ActionListener // here we have used ActionListener for the use of JButtons
{
JTextField jtx;
// here we have used double to represent floating point numbers
double temp,temp1,result,a;
// here we have used static double to represent the integers or numbers
static double m1,m2;
// here we have used int to represent the integers
int k=1,x=0,y=0,z=0;
// here we have used char keyword to declare character type variables and methods
char ch;
// here we have declared JButton to display the buttons used in Calculator
JButton
one,two,three,four,five,six,seven,eight,nine,zero,clr,powy;
JButton
plus,min,div,lg,rec,mul,eq,asin,acos,atan,poin,sqrt,sin,cos,tan,lgn,nrt,d2b,b2d,recall,stor,sip;
JMenuBar bar;
JMenu view;
JMenuItem exit;
// here we JRadioButtonMenultem is used to choose one of the calculator type whether it is standard or scientific
JRadioButtonMenuItem standard,scientific;
JSeparator jp;
ButtonGroup bg;
Container cont;
JPanel textPanel,syntpanel,buttonpanel;
Calculator()
{
cont=getContentPane();
// here we have used setLayout() method to set the layout of the calculator
cont.setLayout(new BorderLayout());
JPanel textpanel=new JPanel();
// here we defined the type of font, size of font
Font font=new Font("Arial",Font.PLAIN,18);
jtx=new JTextField(25);
jtx.setFont(font);
jtx.setHorizontalAlignment(SwingConstants.RIGHT);
jtx.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent keyevent)
{
char c=keyevent.getKeyChar();
// here we have used if else method
if(c>='0' && c<='9')
{
}
else
{
keyevent.consume();
}
}
});
textpanel.add(jtx);
buttonpanel=new JPanel();
buttonpanel.setLayout(new GridLayout(6,4,2,2));
// here we have used boolean method
boolean t=true;
syntpanel=new JPanel();
syntpanel.setLayout(new GridLayout(5,1));
bar=new JMenuBar();
view=new JMenu("View");
// so here we have defined which buttons should be included in standard calculator
standard =new JRadioButtonMenuItem("Standard",true);
standard.setMnemonic('S');
standard.addItemListener(new radiohandler());
// here we have defined which buttons should be included in scientific calculator
scientific =new JRadioButtonMenuItem("Scientific");
standard.setMnemonic('c');
scientific.addItemListener(new radiohandler());
jp=new JSeparator();
// here we can exit the calculator
exit=new JMenuItem("Exit");
standard.setMnemonic('E');
exit.addActionListener(this);
bg=new ButtonGroup();
bg.add(standard);
bg.add(scientific);
view.add(standard);
view.add(scientific);
view.add(jp);
view.add(exit);
bar.add(view);
setJMenuBar(bar);
// here we start defining buttons in calculator in sequence
seven=new JButton("7");
buttonpanel.add(seven);
seven.addActionListener(this);
eight=new JButton("8");
buttonpanel.add(eight);
eight.addActionListener(this);
nine=new JButton("9");
buttonpanel.add(nine);
nine.addActionListener(this);
clr=new JButton("AC");
buttonpanel.add(clr);
clr.addActionListener(this);
four=new JButton("4");
buttonpanel.add(four);
four.addActionListener(this);
five=new JButton("5");
buttonpanel.add(five);
five.addActionListener(this);
six=new JButton("6");
buttonpanel.add(six);
six.addActionListener(this);
mul=new JButton("*");
buttonpanel.add(mul);
mul.addActionListener(this);
one=new JButton("1");
buttonpanel.add(one);
one.addActionListener(this);
two=new JButton("2");
buttonpanel.add(two);
two.addActionListener(this);
three=new JButton("3");
buttonpanel.add(three);
three.addActionListener(this);
min=new JButton("-");
buttonpanel.add(min);
min.addActionListener(this);
b2d=new JButton("B2D");
buttonpanel.add(b2d);
b2d.addActionListener(this);
zero=new JButton("0");
buttonpanel.add(zero);
zero.addActionListener(this);
div=new JButton("/");
buttonpanel.add(div);
div.addActionListener(this);
plus=new JButton("+");
buttonpanel.add(plus);
plus.addActionListener(this);
nrt=new JButton("Nrt");
buttonpanel.add(nrt);
nrt.addActionListener(this);
sqrt=new JButton("Sqrt");
buttonpanel.add(sqrt);
sqrt.addActionListener(this);
poin=new JButton(".");
poin.addActionListener(this);
buttonpanel.add(poin);
eq=new JButton("=");
buttonpanel.add(eq);
eq.addActionListener(this);
sin=new JButton("SIN");
syntpanel.add(sin);
sin.addActionListener(this);
cos=new JButton("COS");
syntpanel.add(cos);
cos.addActionListener(this);
tan=new JButton("TAN");
syntpanel.add(tan);
tan.addActionListener(this);
powy=new JButton("x^y");
syntpanel.add(powy);
powy.addActionListener(this);
d2b=new JButton("D2B");
syntpanel.add(d2b);
d2b.addActionListener(this);
asin=new JButton("ISIN");
syntpanel.add(asin);
asin.addActionListener(this);
acos=new JButton("ICOS");
syntpanel.add(acos);
acos.addActionListener(this);
atan=new JButton("ITAN");
syntpanel.add(atan);
atan.addActionListener(this);
lgn=new JButton("logn");
syntpanel.add(lgn);
lgn.addActionListener(this);
lg=new JButton("log");
syntpanel.add(lg);
lg.addActionListener(this);
sip=new JButton("SIP");
buttonpanel.add(sip);
sip.addActionListener(this);
recall=new JButton("RECALL");
buttonpanel.add(recall);
recall.addActionListener(this);
stor=new JButton("STOR");
buttonpanel.add(stor);
stor.addActionListener(this);
cont.add("Center",buttonpanel);
cont.add("North",textpanel);
// here we close the operation
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// here class radiohandler implements ItemListener
class radiohandler implements ItemListener
{
public void itemStateChanged(ItemEvent ie)
{
// here we have used AbstractButton method
AbstractButton button=(AbstractButton)ie.getItem();
// here we have used String
String label=button.getText();
{
if(label.equals("Standard"))
{
cont.remove(syntpanel);
validate();
}
if(label.equals("Scientific"))
{
cont.add("West",syntpanel);
validate();
}
}
}
}
public void actionPerformed(ActionEvent e)
{
String s=e.getActionCommand();
if(s.equals("Exit"))
{
System.exit(0);
}
// so here we start giving commands to the buttons which will help them work in defining answers or giving them commands on how to work
if(s.equals("1"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"1");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"1");
z=0;
}
}
if(s.equals("2"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"2");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"2");
z=0;
}
}
if(s.equals("3"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"3");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"3");
z=0;
}
}
if(s.equals("4"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"4");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"4");
z=0;
}
}
if(s.equals("5"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"5");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"5");
z=0;
}
}
if(s.equals("6"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"6");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"6");
z=0;
}
}
if(s.equals("7"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"7");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"7");
z=0;
}
}
if(s.equals("8"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"8");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"8");
z=0;
}
}
if(s.equals("9"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"9");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"9");
z=0;
}
}
if(s.equals("0"))
{
if(z==0)
{
jtx.setText(jtx.getText()+"0");
}
else
{
jtx.setText("");
jtx.setText(jtx.getText()+"0");
z=0;
}
}
if(s.equals("AC"))
{
jtx.setText("");
x=0;
y=0;
z=0;
}
if(s.equals("log"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.log(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("logn"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.log1p(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("ISIN"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.asin(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("x^y"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.pow(Double.parseDouble(jtx.getText()),m2);
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("ICOS"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.acos(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("ITAN"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.atan(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("."))
{
if(y==0)
{
jtx.setText(jtx.getText()+".");
y=1;
}
else
{
jtx.setText(jtx.getText());
}
}
if(s.equals("+"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
temp=0;
ch='+';
}
else
{
temp=Double.parseDouble(jtx.getText());
jtx.setText("");
ch='+';
y=0;
x=0;
}
jtx.requestFocus();
}
if(s.equals("-"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
temp=0;
ch='-';
}
else
{
x=0;
y=0;
temp=Double.parseDouble(jtx.getText());
jtx.setText("");
ch='-';
}
jtx.requestFocus();
}
if(s.equals("/"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
temp=1;
ch='/';
}
else
{
x=0;
y=0;
temp=Double.parseDouble(jtx.getText());
ch='/';
jtx.setText("");
}
jtx.requestFocus();
}
if(s.equals("*"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
temp=1;
ch='*';
}
else
{
x=0;
y=0;
temp=Double.parseDouble(jtx.getText());
ch='*';
jtx.setText("");
}
jtx.requestFocus();
}
if(s.equals("Sqrt"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.sqrt(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("SIN"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.sin(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("COS"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.cos(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("TAN"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.tan(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("Nrt"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Math.round(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("D2B"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Integer.toBinaryString(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("B2D"))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
a=Integer.parseInt(Double.parseDouble(jtx.getText()));
jtx.setText("");
jtx.setText(jtx.getText() + a);
}
}
if(s.equals("="))
{
if(jtx.getText().equals(""))
{
jtx.setText("");
}
else
{
temp1 = Double.parseDouble(jtx.getText());
// here we have used switch keyword
switch(ch)
{
// here we will explain the symbols on how to work
case '+':
result=temp+temp1;
break;
case '-':
result=temp-temp1;
break;
case '/':
result=temp/temp1;
break;
case '*':
result=temp*temp1;
break;
}
jtx.setText("");
jtx.setText(jtx.getText() + result);
z=1;
}
}
jtx.requestFocus();
}
public static void main(String args[])
{
Calculator n=new Calculator();
// here we have gave the title
n.setTitle("CALCULATOR");
// here we have set the size of calculator
n.setSize(370,350);
n.setResizable(false);
n.setVisible(true);
}
}