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(); } }
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26926.html