當前位置:編程學習大全網 - 源碼下載 - 急求!!!如何用java程序代碼實現計算器界面

急求!!!如何用java程序代碼實現計算器界面

package?jisuanqi_new;

import?java.awt.*;

import?java.awt.event.*;

public?class?JiSuanQi_new?implements?ActionListener

{

Panel?p1;//聲明面板p1

TextField?t1;//聲明文本行t1

String[]?label?=?{"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};//聲明標簽數組label1存放按鈕上的標簽

Button[]?b;//聲明按鈕數組存放16個按鈕

private?int?i;//聲明i以備後用

private?String?op1?=?"0";//運算數備用

private?String?operator?=?"+";//運算符備用

private?boolean?append?=?false;//備用

public?JiSuanQi_new()//構造方法

{

t1=new?TextField();//初始化文本行t1

b?=?new?Button[label.length];//初始化按鈕數組b

p1=new?Panel();//初始化面板p1

p1.setLayout(new?GridLayout(4,4,4,4));//使面板選擇網格布局管理器以備儲存16個按鈕(4行4列)

for(int?i=0;i<b.length;i++)//利用for循環把標簽放在按鈕上,使每個按鈕添加事件監聽器,在面板p1上添加上16個按鈕

{

b[i]?=?new?Button(label[i]);//把標簽依次放在16個按鈕上

b[i].addActionListener(this);//使每個按鈕添加動作事件監聽器

p1.add(b[i]);?//分別將按鈕添加到面板p1上

}?

Frame?f=new?Frame("計算器1.0");//初始化窗口f,起名字計算器1.0

f.setLayout(new?BorderLayout());//為窗口選擇邊界布局管理器

f.add(BorderLayout.NORTH,t1);//把文本行他添加到窗口的北部

f.add(BorderLayout.CENTER,p1);//把面吧p1添加到窗口的中間

f.addWindowListener(new?WindowAdapter(){//給窗口f添加窗口事件監聽器

public?void?windowClosing(WindowEvent?eve){//運行窗口關閉方法

System.exit(0);//退出程序

}

});

f.setSize(250,?250);//設置窗口大小

f.setLocation(200,200);

f.setVisible(true);//顯示窗口

}

public?static?void?main(String?args[])

{

new?JiSuanQi_new();?//調用構造方法

}

public?void?actionPerformed(ActionEvent?ae)?

{//按鈕被操作發生

String?comm?=?ae.getActionCommand();//返回與此動作相關的命令字符串,即:使用者第壹次點擊的按鈕是什麽。

if("0123456789".indexOf(comm)!=-1)//如果相關命令字符串為0~9之間的數字則執行

{

if(append){

String?temp?=?t1.getText();//新數字

t1.setText(temp+comm);

}else{?//因為此時append為false執行這個

t1.setText(comm);?//將文本行t1設置為相關命令字符串(妳按中的按鈕代碼)

append?=?true;//此時append=true若繼續按按鈕若繼續按數字的話1.第壹次的按話不會改變2.非第壹次按得話會覆蓋之前按得數字(即缺點:只能進行單個數字的計算)

}

}

else?if(("+-*/".indexOf(comm)!=-1))//如果相關命令字符串為+-*/之間的數字則執行

{

//保存

//t1.setText(comm);

op1?=?t1.getText();//把第壹個數賦值給op1?

operator?=?comm;//把命令字符串賦值給operator

append?=?false;//此時append為false即若繼續按按鈕若按數字的話將重復上面的動作,按符號的話將覆蓋之前的符號

}

else?if("=".equals(comm))//如果按的是=號,則按條件進行下面的運算

{

String?op2?=?t1.getText();//op2第二個數

double?d1?=?Double.parseDouble(op1);

double?d2?=?Double.parseDouble(op2);

if(operator.equals("+")){

d1?=?d1?+?d2?;

}else?if(operator.equals("-")){

d1?=?d1?-?d2;

}else?if(operator.equals("*")){

d1?=?d1?*?d2;

}else?{

d1?=?d1?/?d2;

}

t1.setText(d1+"");//顯示計算結果

append?=?false;

}

else?if(".".equals(comm))//若是.號繼續按

{

String?temp?=?t1.getText();

if(temp.indexOf(".")==-1){

t1.setText(temp+".");

append?=?true;

}

}

}

}

  • 上一篇:關於Android的setTag()方法和getTag()的壹個問題
  • 下一篇:貓貧血驗血什麽指標低?
  • copyright 2024編程學習大全網