import java.awt.event.*;// 導入awt工具組件的事件類
/**
* 作用:calc類用於演示加法計算器的功能<p>
* @author 網絡用戶
* @version 1.0 2009-6-3
* @since JDK 1.5
*/
class calc extends WindowAdapter implements ActionListener
{
//以下聲明相關變量
Frame f; //窗口
// Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9;
Button b[] = new Button[10]; //10個按鈕,分別對應數字0到9
Button be, badd, bc; //bc為=,badd為+,bc為歸0按鈕
TextField answer; //文本框answer用於顯示相加的結果
Panel p; //面板
String s = ""; //臨時變量,用於記住被加數
int t1, t2; //t1,t2分別表示被加數,加數
/**
* 作用:main方法為程序運行的入口
* @param args
*/
public static void main( String args[] )
{
calc cg = new calc(); //創建壹個calc類的對象
cg.go(); //調用go方法,顯示加法器界面,並完成加法功能
}
/**
* 作用:go()方法用於顯示加法器界面,並完成加法功能
*/
public void go()
{
p = new Panel(); //創建面板的對象,10個按鈕將在此面板對象上添加和顯示
answer = new TextField("0", 15); //設置文本框的默認值為0,文本框的長度15個字符
b[0] = new Button("0"); //以下就是那10個按鈕,按鈕上的文本就是0到9的數字
b[1] = new Button("1");
b[2] = new Button("2");
b[3] = new Button("3");
b[4] = new Button("4");
b[5] = new Button("5");
b[6] = new Button("6");
b[7] = new Button("7");
b[8] = new Button("8");
b[9] = new Button("9");
be = new Button("="); //等號
badd = new Button("+"); //加號
bc = new Button("C"); //歸0按鈕
p.setLayout(new GridLayout(4, 3)); //將面板設置為4行3列,即12個格子,剛好可以存放地10個數字按鈕另加+號按鈕和=號按鈕,***12個按鈕
p.add(b[7]); //添加10個數字按鈕到面板上
p.add(b[8]);
p.add(b[9]);
p.add(b[4]);
p.add(b[5]);
p.add(b[6]);
p.add(b[1]);
p.add(b[2]);
p.add(b[3]);
p.add(b[0]);
for( int i = 0; i < b.length; i++ )
b[i].addActionListener(this); //為10個數字按鈕添加事件監聽器,以用於實現加法功能
p.add(be); //添加=號按鈕到面板上
p.add(badd); //添加+號按鈕到面板上
be.addActionListener(this); //為=號按鈕添加事件監聽器,用於實現加法功能
badd.addActionListener(this); //為+號按鈕添加事件監聽器,用於實現加法功能
f = new Frame("calc"); //創建壹個Frame對象(窗口),窗口的標題就是calc
f.setSize(300, 300); //窗口的大小為300*300像素
f.add(answer, "North"); //將文本框設置在窗口的北部(上),窗口的默認布局為BorderLayout,即東西南北中5個位置
f.add(p, "Center"); //將面板設置在窗口的中部(中)
f.add(bc, "South"); //將歸0按鈕設置在窗口的南部(下)
bc.addActionListener(this); //為歸0按鈕添加事件監聽器,用於將計算結果歸0
f.addWindowListener(this); //為窗口添加事件監聽器,用於實現關閉窗口的功能
f.pack(); //此方法用於窗口到合適的大小
f.setVisible(true); //顯示窗口,為false時將不會顯示窗口
}
//在10個數字按鈕和3個功能按鈕上單擊,將觸發此方法
public void actionPerformed( ActionEvent e )
{
if( e.getSource() == bc )
{//單擊了歸0按鈕,設置為默認值
s = "";
t1 = 0; //被加數設0
t2 = 0; //加數設0
answer.setText("0"); //文本框設為0
} else if( e.getSource() == badd )
{//單擊+號按鈕
t1 = Integer.parseInt(s); //記下被加數
s = "";
} else if( e.getSource() == be )
{//單擊=號按鈕
t2 = Integer.parseInt(s); //記下加數
t2 = t2 + t1; //把被加數與加數相加
answer.setText((new Integer(t2)).toString()); //在文本框上顯示相加的結果
} else
{//單擊0到9之間的任意壹個數字按鈕
for( int i = 0; i < b.length; i++ )
if( e.getSource() == b[i] )
{
System.out.println("1");
s = s + b[i].getActionCommand(); //獲得被單擊按鈕上的數字
answer.setText(s); //在文本框上顯示連續單擊那幾個數字
}
}
}
//關閉窗口,觸發此方法
public void windowClosing( WindowEvent ev )
{
System.exit(0); //退出程序
}
}