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