Calculator with both Standard and Scientific Mode

Calculator with both Standard and Scientific Mode

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

public class calculator extends JFrame implements ActionListener
{
        JTextField jtx;
        double temp,temp1,result,a;
        static double m1,m2;
        int k=1,x=0,y=0,z=0;
        char ch;
        JButton
one,two,three,four,five,six,seven,eight,nine,zero,clr,pow2,pow3,exp;
        JButton
plus,min,div,lg,rec,mul,eq,plmi,poin,mr,mc,mp,mm,sqrt,sin,cos,tan;
        JMenuBar bar;
        JMenu view;
        JMenuItem exit;
        JRadioButtonMenuItem standard,scientific;
        JSeparator jp;
        ButtonGroup bg;
        Container cont;
        JPanel textPanel,syntpanel,buttonpanel;
        calculator()
        {
                cont=getContentPane();
                cont.setLayout(new BorderLayout());
                JPanel textpanel=new JPanel();
                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();
                 if(c>='0' && c<='9')
                 {
                 }
                 else
                 {
                 keyevent.consume();
                 }
                 }
                 });
                textpanel.add(jtx);
                buttonpanel=new JPanel();
                buttonpanel.setLayout(new GridLayout(5,4,2,2));
                boolean t=true;
                syntpanel=new JPanel();
                syntpanel.setLayout(new GridLayout(5,1));
                bar=new JMenuBar();
                view=new JMenu("View");

                standard =new JRadioButtonMenuItem("Standard",true);
                standard.setMnemonic('S');
                standard.addItemListener(new radiohandler());
                scientific =new JRadioButtonMenuItem("Sceintific");
                standard.setMnemonic('c');
                scientific.addItemListener(new radiohandler());
                jp=new JSeparator();
                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);

                mr=new JButton("MR");
                buttonpanel.add(mr);
                mr.addActionListener(this);
                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);

                mc=new JButton("MC");
                buttonpanel.add(mc);
                mc.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);

                mp=new JButton("M+");
                buttonpanel.add(mp);
                mp.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);

                mm=new JButton("M-");
                buttonpanel.add(mm);
                mm.addActionListener(this);
                zero=new JButton("0");
                buttonpanel.add(zero);
                zero.addActionListener(this);
                plmi=new JButton("+/-");
                buttonpanel.add(plmi);
                plmi.addActionListener(this);
                poin=new JButton(".");
                buttonpanel.add(poin);
                poin.addActionListener(this);
                plus=new JButton("+");
                buttonpanel.add(plus);
                plus.addActionListener(this);


                rec=new JButton("1/x");
                buttonpanel.add(rec);
                rec.addActionListener(this);
                sqrt=new JButton("Sqrt");
                buttonpanel.add(sqrt);
                sqrt.addActionListener(this);
                lg=new JButton("log");
                buttonpanel.add(lg);
                lg.addActionListener(this);
                div=new JButton("/");
                div.addActionListener(this);
                buttonpanel.add(div);
                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);
                pow2=new JButton("x^2");
                syntpanel.add(pow2);
                pow2.addActionListener(this);
                pow3=new JButton("x^3");
                syntpanel.add(pow3);
                pow3.addActionListener(this);
                exp=new JButton("Exp");
                exp.addActionListener(this);

                cont.add("Center",buttonpanel);
                cont.add("North",textpanel);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
class radiohandler implements ItemListener
{
public void itemStateChanged(ItemEvent ie)
  {
        AbstractButton button=(AbstractButton)ie.getItem();
        String label=button.getText();
        {
          if(label.equals("Standard"))
          {
                cont.remove(syntpanel);
                validate();
          }
        if(label.equals("Sceintific"))
          {
                cont.add("West",syntpanel);
                validate();
          }
        }
  }
}
public void actionPerformed(ActionEvent e)
{
        String s=e.getActionCommand();
        if(s.equals("Exit"))
        {
                System.exit(0);
        }
        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("1/x"))
        {
           if(jtx.getText().equals(""))
             {
                 jtx.setText("");
             }
           else
             {
                  a=1/Double.parseDouble(jtx.getText());
                  jtx.setText("");
                  jtx.setText(jtx.getText() + a);
             }
        }
        if(s.equals("Exp"))
        {
          if(jtx.getText().equals(""))
            {
                 jtx.setText("");
            }
            else
            {
                 a=Math.exp(Double.parseDouble(jtx.getText()));
                 jtx.setText("");
                 jtx.setText(jtx.getText() + a);
            }
        }
        if(s.equals("x^2"))
        {
          if(jtx.getText().equals(""))
           {
                jtx.setText("");
           }
           else
           {
               a=Math.pow(Double.parseDouble(jtx.getText()),2);
               jtx.setText("");
               jtx.setText(jtx.getText() + a);
           }
        }
        if(s.equals("x^3"))
        {
          if(jtx.getText().equals(""))
          {
              jtx.setText("");
          }
          else
          {
              a=Math.pow(Double.parseDouble(jtx.getText()),3);
              jtx.setText("");
              jtx.setText(jtx.getText() + a);
          }
        }
        if(s.equals("+/-"))
        {
         if(x==0)
         {
              jtx.setText("-"+jtx.getText());
         x=1;
         }
         else
         {
              jtx.setText(jtx.getText());
         }
         }
        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("MC"))
          {
                m1=0;
                jtx.setText("");
          }
        if(s.equals("MR"))
        {
                jtx.setText("");
                jtx.setText(jtx.getText() + m1);
        }
        if(s.equals("M+"))
           {
                if(k==1)
                {
                m1=Double.parseDouble(jtx.getText());
                k++;
                }
                else
                {
                m1+=Double.parseDouble(jtx.getText());
                jtx.setText(""+m1);
                }
            }
        if(s.equals("M-"))
           {
                if(k==1)
                {
                m1=Double.parseDouble(jtx.getText());
                k++;
                }
                else
                {
                m1-=Double.parseDouble(jtx.getText());
                jtx.setText(""+m1);
                }
            }
            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("="))
       {
         if(jtx.getText().equals(""))
         {
              jtx.setText("");
         }
         else
         {
         temp1 = Double.parseDouble(jtx.getText());
         switch(ch)
         {
                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();
                n.setTitle("CALCULATOR");
                n.setSize(370,250);
                n.setResizable(false);
                n.setVisible(true);
        }
}

---------------
----------------

No comments:

Post a Comment