Tuesday, June 11, 2013

Sample Calculator in Java

package homework;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener
{
    JTextField field;
    JButton numbtn[]=new JButton[10];
    JButton plus,minus,multi,div,equal,sqrt,point,c,per,divbyx;
    JPanel panel,btnpanel,oppanel;
    Container conpane;
    String s1,s2,s3,s4;
    int op;
    JMenuBar mbar;
    JMenu file;
    JMenuItem exit;
    public Calculator()
    {
        super("Calculator");
        setSize(320,240);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        mbar=new JMenuBar();
        setJMenuBar(mbar);
        file=new JMenu("File");
        file.setMnemonic((int)'F');
        exit=new JMenuItem("Exit");
        exit.addActionListener(this);
        panel=new JPanel();
        mbar.add(file);
        file.add(exit);
        panel.setLayout(new FlowLayout());
        field=new JTextField(36);
        panel.add(field);
        conpane=getContentPane();
        conpane.add(panel,BorderLayout.NORTH);
        btnpanel=new JPanel();
        oppanel=new JPanel();
        btnpanel.setBorder(BorderFactory.createTitledBorder(""));
        btnpanel.add(point=new JButton("."));
        point.addActionListener(this);
        for(int i=9;i>=0;i--)
        {
            numbtn[i]=new JButton(Integer.toString(i));
            numbtn[i].addActionListener(this);
            numbtn[i].setToolTipText(Integer.toString(i));
            btnpanel.add(numbtn[i]);
        }
        c=new JButton("C");
        plus=new JButton("+");
        minus=new JButton("-");
        multi=new JButton("*");
        div=new JButton("/");
        equal=new JButton("=");
        sqrt=new JButton("sqrt");
        btnpanel.setLayout(null);
        conpane.add(btnpanel,BorderLayout.CENTER);
        btnpanel.add(plus);
        btnpanel.add(minus);
        btnpanel.add(multi);
        btnpanel.add(div);
        btnpanel.add(equal);
        btnpanel.add(sqrt);
        btnpanel.add(c);
        per=new JButton("%");
        divbyx=new JButton("1/x");
        btnpanel.add(per);
        btnpanel.add(divbyx);
        plus.addActionListener(this);
        minus.addActionListener(this);
        multi.addActionListener(this);
        div.addActionListener(this);
        sqrt.addActionListener(this);
        equal.addActionListener(this);
        per.addActionListener(this);
        divbyx.addActionListener(this);
        numbtn[0].setBounds(10,120,50,20);
        point.setBounds(70,120,50,20);
        equal.setBounds(130,120,50,20);
        div.setBounds(190,120,50,20);
        numbtn[1].setBounds(10,90,50,20);
        numbtn[2].setBounds(70,90,50,20);
        numbtn[3].setBounds(130,90,50,20);
        multi.setBounds(190,90,50,20);
        numbtn[4].setBounds(10,60,50,20);
        numbtn[5].setBounds(70,60,50,20);
        numbtn[6].setBounds(130,60,50,20);
        minus.setBounds(190,60,50,20);
        numbtn[7].setBounds(10,30,50,20);
        numbtn[8].setBounds(70,30,50,20);
        numbtn[9].setBounds(130,30,50,20);
        plus.setBounds(190,30,50,20);
        c.setBounds(250,30,60,20);
        sqrt.setBounds(250,60,60,20);
        per.setBounds(250,90,60,20);
        divbyx.setBounds(250,120,60,20);
        c.addActionListener(this);
        field.setHorizontalAlignment(JTextField.RIGHT);
        plus.setToolTipText("Addition");
        minus.setToolTipText("Subtraction");
        multi.setToolTipText("Multiplication");
        div.setToolTipText("Divide");
        equal.setToolTipText("Equals");
        c.setToolTipText("Clear Field");
        sqrt.setToolTipText("Square Root");
        per.setToolTipText("Percentage");
        divbyx.setToolTipText("Divide By One");
        point.setToolTipText("Decimal Point");
        try
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
            SwingUtilities.updateComponentTreeUI(this);
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null,"Unsupported Look And Feel"+e);
        }
        field.setEditable(false);
        field.setBackground(new Color(255,255,255));
        field.setForeground(new Color(0,0,0));
    }
    public void actionPerformed(ActionEvent evt)
    {
        if(evt.getSource()==exit)
        {
            System.exit(0);
        }
        else
        if(evt.getSource()==numbtn[0])
        {
            String t=field.getText();
            clear();
            field.setText(t+"0");
        }
        else
        if(evt.getSource()==numbtn[1])
        {
            String t=field.getText();
            clear();
            field.setText(t+"1");
        }
        else
        if(evt.getSource()==numbtn[2])
        {
            String t=field.getText();
            clear();
            field.setText(t+"2");
        }
        else
        if(evt.getSource()==numbtn[3])
        {
            String t=field.getText();
            clear();
            field.setText(t+"3");
        }
        else
        if(evt.getSource()==numbtn[4])
        {
            String t=field.getText();
            clear();
            field.setText(t+"4");
        }
        else
        if(evt.getSource()==numbtn[5])
        {
            String t=field.getText();
            clear();
            field.setText(t+"5");
        }
        else
        if(evt.getSource()==numbtn[6])
        {
            String t=field.getText();
            clear();
            field.setText(t+"6");
        }
        else
        if(evt.getSource()==numbtn[7])
        {
            String t=field.getText();
            clear();
            field.setText(t+"7");
        }
        else
        if(evt.getSource()==numbtn[8])
        {
            String t=field.getText();
            clear();
            field.setText(t+"8");
        }
        else
        if(evt.getSource()==numbtn[9])
        {
            String t=field.getText();
            clear();
            field.setText(t+"9");
        }
        else
        if(evt.getSource()==point)
        {
            String t=field.getText();
            clear();
            field.setText(t+".");
        }
        else
        if(evt.getSource()==plus)
        {
            s1=field.getText();
            clear();
            op=1;
        }
        else
        if(evt.getSource()==minus)
        {
            s1=field.getText();
            clear();
            op=2;
        }
        else
        if(evt.getSource()==multi)
        {
            s1=field.getText();
            clear();
            op=3;
        }
        else
        if(evt.getSource()==div)
        {
            s1=field.getText();
            clear();
            op=4;
        }
        else
        if(evt.getSource()==c)
        {
            field.setText("");
        }
        else
        if(evt.getSource()==equal)
        {
            s2=field.getText();
            if(op==1)
            {
                double n;
                n=Double.parseDouble(s1)+Double.parseDouble(s2);
                field.setText(String.valueOf(n));
            }
            else
            if(op==2)
            {
                double n;
                n=Double.parseDouble(s1)-Double.parseDouble(s2);
                field.setText(String.valueOf(n));
            }
            else
            if(op==3)
            {
                double n;
                n=Double.parseDouble(s1)*Double.parseDouble(s2);
                field.setText(String.valueOf(n));
            }
            else
            if(op==4)
            {
                double n;
                double n1=Double.parseDouble(s1);
                double n2=Double.parseDouble(s2);
                if(n1!=0 && n2!=0)
                {
                    n=n1/n2;
                    field.setText(String.valueOf(n));
                }
                else
                {
                    field.setText("Divide By Zero Error");
                }
            }

        }
        else
        if(evt.getSource()==sqrt)
        {
            String s=field.getText();
            double no=Double.parseDouble(s);
            double result=Math.sqrt(no);
            field.setText(String.valueOf(result));
        }
        else
        if(evt.getSource()==divbyx)
        {
            String s=field.getText();
            double no=Double.parseDouble(s);
            double result=1/no;
            field.setText(String.valueOf(result));
        }
        else
        if(evt.getSource()==per)
        {
            s2=field.getText();
            double no1=Double.parseDouble(s1);
            double no2=Double.parseDouble(s2);
            if(op==3)
            {
                double result=(no1/100)*no2;
                field.setText(String.valueOf(result));
            }
            else
                field.setText("Invalid");

        }

    }
    public void clear()
    {
        field.setText("");
    }
    public static void main(String args[])
    {
        SwingUtilities.invokeLater(new Runnable(){
            public void run()
            {
                Calculator c = new Calculator();
                c.setVisible(true);
            }
    });
    }
}

No comments:

Post a Comment