package text;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.Border;
class Board1 implements ActionListener
{
JFrame frame;
JPanel p1, p2, p3, p4, p5, p6,p7,p8;
JTextField tf;
JButton[] b=new JButton[50];
Board1(String t)
{
frame = new JFrame(t);
frame.setSize(400, 500);
frame.setResizable(false);
frame.setLocationRelativeTo(null);
Container container = frame.getContentPane();
container.setLayout(new BorderLayout(2,2));
p1 = new JPanel();
tf = new JTextField(35);
tf.setHorizontalAlignment(JTextField.RIGHT);
p1.add(tf);
p2 = new JPanel();
p2.setLayout(new BorderLayout(2,2));
p3 = new JPanel();
p3.setLayout(new BorderLayout(2,2));
p4 = new JPanel();
p4.setLayout(new BorderLayout(2,2));
p5 = new JPanel();
Border border=BorderFactory.createLoweredBevelBorder();
p5.setBorder(border);
p6 = new JPanel();
p6.setLayout(new GridLayout(1,3));
p6.add(b[0] =new JButton("Backspace"));
p6.add(b[1] =new JButton("CE"));
p6.add(b[2] =new JButton("C"));
p7 = new JPanel();
p7.setLayout(new GridLayout(4,1));
p7.add(b[3] =new JButton("MC"));
p7.add(b[4] =new JButton("MR"));
p7.add(b[5] =new JButton("MS"));
p7.add(b[6] =new JButton("M+"));
p8 = new JPanel();
p8.setLayout(new GridLayout(4,5));
p8.add(b[24]=new JButton("7"));
p8.add(b[25]=new JButton("8"));
p8.add(b[26]=new JButton("9"));
p8.add(b[15]=new JButton("/"));
p8.add(b[7]=new JButton("sqrt"));
p8.add(b[21]=new JButton("4"));
p8.add(b[22]=new JButton("5"));
p8.add(b[23]=new JButton("6"));
p8.add(b[14]=new JButton("*"));
p8.add(b[8]=new JButton("%"));
p8.add(b[18]=new JButton("1"));
p8.add(b[19]=new JButton("2"));
p8.add(b[20]=new JButton("3"));;
p8.add(b[13]=new JButton("-"));
p8.add(b[9]=new JButton("1/x"));
p8.add(b[17]=new JButton("0"));
p8.add(b[10]=new JButton("+/-"));
p8.add(b[11]=new JButton("."));
p8.add(b[12]=new JButton("+"));
p8.add(b[16]=new JButton("="));
for(int i=0;i<27;i++)
{
b[i].addActionListener(this);
}
p4.add(BorderLayout.WEST,p7);
p4.add(BorderLayout.CENTER,p8);
p3.add(BorderLayout.CENTER,p5);
p3.add(BorderLayout.EAST,p6);
p2.add(BorderLayout.NORTH,p3);
p2.add(BorderLayout.CENTER,p4);
frame.add(BorderLayout.NORTH,p1);
frame.add(BorderLayout.CENTER,p2);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e)
{
for(int j=0;j<27;j++)
{
if (e.getSource()==b[17+j])
{
tf.setText(tf.getText()+j);
}
}
if(e.getSource()==b[12])
{
tf.setText(tf.getText()+"+");
}
else if(e.getSource()==b[13])
{
tf.setText(tf.getText()+"-");
}
else if(e.getSource()==b[14])
{
tf.setText(tf.getText()+"*");
}
else if(e.getSource()==b[15])
{
tf.setText(tf.getText()+"/");
}
else if(e.getSource()==b[11])
{
tf.setText(tf.getText()+".");
}
else if(e.getSource()==b[1]||e.getSource()==b[2])
{
tf.setText("");
}
else if(e.getSource()==b[16])
{
int i=0,j=0,x;
float t=0,n=-1;
float[] a=new float[50];
char[] c=new char[50];
String s=tf.getText();
while(i<s.length())
{
if(s.charAt(i)>='0'&&s.charAt(i)<='9')
{
if(n==-1&&t==0)
{
n=s.charAt(i)-48;
}
else if(t==0)
{
n=n*10+(s.charAt(i)-48);
}
else
{
t=t*0.1f;
n=n+(s.charAt(i)-48)*t;
}
}
else if(s.charAt(i)=='.')
{
t=1;
}
else if(s.charAt(i)=='+'||s.charAt(i)=='-'||s.charAt(i)=='*'||s.charAt(i)=='/')
{
a[j]=n;
n=-1;
t=0;
c[j]=s.charAt(i);
j++;
}
i++;
}
a[j]=n;
c[j]='#';
/*tf.setText("");
for(i=0;i<j;i++)
{
tf.setText(tf.getText()+a[i]+c[i]);
}
tf.setText(tf.getText()+a[i]);*/
for(i=0;c[i]!='#';j--)
{
if(c[i]=='*')
{
a[i]=a[i]*a[i+1];
for(x=i+1;x<=j;x++)
{
a[x]=a[x+1];
c[x]=c[x+1];
}
}
else if(c[i]=='/')
{
a[i]=a[i]/a[i+1];
for(x=i+1;x<=j;x++)
{
a[x]=a[x+1];
c[x]=c[x+1];
}
}
else
{
i++;
j++;
}
}
while(c[0]!='#')
{
if(c[0]=='+')
{
a[0]=a[0]+a[1];
for(x=1;x<=j;x++)
{
a[x]=a[x+1];
c[x]=c[x+1];
}
}
else if(c[0]=='-')
{
a[0]=a[0]-a[1];
for(x=1;x<=j;x++)
{
a[x]=a[x+1];
c[x]=c[x+1];
}
}
j--;
}
tf.setText(Float.toString(a[0]));
}
}
}
public class CYX1015_4
{
public static void main(String[] args)
{
new Board1("计算器");
}
}