import javaawt*;
import javaawtevent*;
import javalang*;
import javaxswing*;
public class cc extends Frame {
//声明三个面板的布局
GridLayout glglgl;
Panel pppp;
JTextField tf;
TextField tf;
Button bbbbbbbbbbbb
bbbbbbb
bbbbbbbb;
StringBuffer str;
//显示屏所显示的字符串
double xy;
//x和y都是运算数
int z;
//Z表示单击了那一个运算符表示+表示表示*表示/
static double m;
//记忆的数字
public cc() {
gl=new GridLayout();
//实例化三个面板的布局
gl=new GridLayout();
gl=new GridLayout();
tf=new JTextField();
//显示屏
tfsetHorizontalAlignment(JTextFieldRIGHT);
tfsetEnabled(false);
tfsetText();
tf=new TextField();
//显示记忆的索引值
tfsetEditable(false);
//实例化所有按钮设置其前景色并注册监听器
b=new Button(Backspace);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button(CE);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button(C);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button(MC);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button(MR);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button(MS);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button(M+);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button();
bsetForeground(Colorblue);
baddActionListener(new Bt());
b=new Button();
bsetForeground(Colorblue);
baddActionListener(new Bt());
b=new Button();
bsetForeground(Colorblue);
baddActionListener(new Bt());
b=new Button(/);
bsetForeground(Colorred);
baddActionListener(new Bt());
b=new Button(sqrt);
bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(*); bsetForeground(Colorred); baddActionListener(new Bt());
b=new Button(%); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorred); baddActionListener(new Bt());
b=new Button(/X); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(+/); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(); bsetForeground(Colorblue); baddActionListener(new Bt());
b=new Button(+); bsetForeground(Colorred); baddActionListener(new Bt());
b=new Button(=); bsetForeground(Colorred); baddActionListener(new Bt());
//实例化四个面板
p=new Panel();
p=new Panel();
p=new Panel();
p=new Panel();
//创建一个空字符串缓沖区
str=new StringBuffer();
//添加面板p中的组件和设置其在框架中的位置和大小
padd(tf);
psetBounds();
//添加面板p中的组件和设置其在框架中的位置和大小
psetLayout(gl);
padd(tf);
padd(b); padd(b); padd(b);
psetBounds();
//添加面板p中的组件并设置其的框架中的位置和大小
psetLayout(gl); padd(b); padd(b);
padd(b); padd(b); psetBounds();
//添加面板p中的组件并设置其在框架中的位置和大小
psetLayout(gl);//设置p的布局
padd(b); padd(b); padd(b); padd(b);
padd(b); padd(b); padd(b); padd(b);
padd(b); padd(b); padd(b); padd(b);
padd(b); padd(b); padd(b); padd(b);
padd(b); padd(b); padd(b); padd(b);
psetBounds();
//设置框架中的布局为空布局并添加个面板
setLayout(null); add(p); add(p); add(p);
add(p); setResizable(false);
//禁止调整框架的大小 //匿名类关闭窗口
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
Systemexit();
}
});
setBackground(ColorlightGray);
setBounds();
setVisible(true); }
//构造监听器
class Bt implements ActionListener {
public void actionPerformed(ActionEvent e) {
try{
if(egetSource()==b)
//选择CE清零
{ tfsetText();
//把显示屏清零
strsetLength();
//清空字符串缓沖区以准备接收新的输入运算数
} else if(egetSource()==b)
//选择C清零
{ tfsetText();
//把显示屏清零
strsetLength();
} else if(egetSource()==b)
//单击+/选择输入的运算数是正数还是负数
{ x=DoubleparseDouble(tfgetText()trim());
tfsetText(+(x)); } else if(egetSource()==b)
//单击加号按钮获得x的值和z的值并清空y的值
{
x=DoubleparseDouble(tfgetText()trim());
strsetLength();
//清空缓沖区以便接收新的另一个运算数
y=d; z=; } else if(egetSource()==b)
//单击减号按钮获得x的值和z的值并清空y的值
{ x=DoubleparseDouble(tfgetText()trim());
strsetLength(); y=d; z=; } else if(egetSource()==b)
//单击乘号按钮获得x的值和z的值并清空y的值
{ x=DoubleparseDouble(tfgetText()trim()); strsetLength(); y=d; z=; }
else if(egetSource()==b)//单击除号按钮获得x的值和z的值并空y的值
{ x=DoubleparseDouble(tfgetText()trim()); strsetLength(); y=d; z=; }
else if(egetSource()==b)//单击等号按钮输出计算结果
{ strsetLength(); switch(z) { case : tfsetText(+(x+y));
break; case : tfsetText(+(xy));break; case : tfsetText(+(x*y));break;
case : tfsetText(+(x/y));break; } } else if(egetSource()==b)
//单击按钮输入小数
{ if(tfgetText()trim()indexOf()!=)
//判断字符串中是否已经包含了小数点
{ } else//如果没数点有小
{ if(tfgetText()trim()equals())
//如果初时显示为
{ strsetLength();
tfsetText((strappend(+egetActionCommand()))toString()); }
else if(tfgetText()trim()equals())
//如果初时显示为空则不做任何操作
{ } else { tfsetText(strappend(egetActionCommand())toString()); }
} y=d; } else if(egetSource()==b)
//求平方根
{ x=DoubleparseDouble(tfgetText()trim());
tfsetText(数字格式异常);
if(x<) tfsetText(负数没有平方根);
else tfsetText(+Mathsqrt(x)); strsetLength(); y=d; }
else if(egetSource()==b)//单击了%按钮
{ x=DoubleparseDouble(tfgetText()trim());
tfsetText(+(*x)); strsetLength(); y=d;
} else if(egetSource()==b)//单击了/X按钮
{ x=DoubleparseDouble(tfgetText()trim());
if(x==) { tfsetText(除数不能为零); } else
{ tfsetText(+(/x)); } strsetLength(); y=d;
} else if(egetSource()==b)//MC为清除内存
{ m=d; tfsetText(); strsetLength();
} else if(egetSource()==b)//MR为重新调用存储的数据
{ if(tfgetText()trim()!=)//有记忆数字
{ tfsetText(+m); } } else if(egetSource()==b)
//MS为存储显示的数据
{ m=DoubleparseDouble(tfgetText()trim());
tfsetText(M); tfsetText(); strsetLength(); }
else if(egetSource()==b)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR
{ m=m+DoubleparseDouble(tfgetText()trim()); } else//选择的是其他的按钮
{ if(egetSource()==b)//如果选择的是这个数字键
{ if(tfgetText()trim()equals())
//如果显示屏显示的为零不做操作
{ } else { tfsetText(strappend(egetActionCommand())toString());
y=DoubleparseDouble(tfgetText()trim()); } } else if(egetSource()==b)
//选择的是BackSpace按钮
{ if(!tfgetText()trim()equals())
//如果显示屏显示的不是零
{ if(strlength()!=) {
tfsetText(strdelete(strlength()strlength())toString());
//可能抛出字符串越界异常
} else { tfsetText(); strsetLength(); } }
y=DoubleparseDouble(tfgetText()trim()); } else
//其他的数字键
{ tfsetText(strappend(egetActionCommand())toString());
y=DoubleparseDouble(tfgetText()trim()); } } } catch(NumberFormatException e){ tfsetText(数字格式异常); } catch(StringIndexOutOfBound***ception e)
{ tfsetText(字符串索引越界); } } } public static void main(String args[]) { new cc(); } }