?? calculator.java
字號:
import java.awt.BorderLayout;//調用BorderLayout布置容器,分北、南、東、西、中五個區(qū)//made by nmbaby
import java.awt.GridLayout;//調用GridLayout布置容器,分為大小相等的矩形
import java.awt.event.ActionEvent;//處理按下按鈕的情況
import java.awt.event.ActionListener;//接收操作事件的偵聽器接口
import javax.swing.JButton;//按鈕的實現
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
//CalcButton繼承JButton按鈕類
class CalcButton extends JButton{
String num;//按鈕顯示的String
public CalcButton(String c,ActionListener action){//構造
super(c);
num=c;
addActionListener(action);
}
}
//Calculator類繼承JFrame實現ActionListener
public class Calculator extends JFrame implements ActionListener{
String str1="",str2="",res;//存放輸入的兩個數字的String
float result=0;//用來存放運算結果
char sign;//存放運算符號
private final JTextField display=new JTextField();
public Calculator(){//構造
super("Calculator");
initComponent();//調用界面函數
}
private void initComponent(){//界面函數,實現計算器的可視性操作界面
JPanel c=(JPanel) getContentPane();//強制轉化類型
//定義str 的String型數組,儲存運算符號
String str[]=new String[]{"/","*","-","0",".","=","+"};
setDefaultCloseOperation(EXIT_ON_CLOSE);//關閉窗口
c.setLayout(new BorderLayout());//制定布局方式五區(qū)域分區(qū)方式
c.add(display,BorderLayout.NORTH);//實現北區(qū)
JPanel centerPanel=new JPanel(new GridLayout(4,4));//制定布局方式網格型布局
for(int i=1;i<10;++i){//顯示1~9和/,*,-的按鈕
centerPanel.add(new CalcButton(String.valueOf(i),this));//數值
if(i%3==0) centerPanel.add(new CalcButton(str[i/3-1],this));
}
for(int i=3;i<7;++i){//顯示0,.,=,+的按鈕
centerPanel.add(new CalcButton(str[i],this));
}
c.add(centerPanel);//結束
setSize(270,270);//界面的寬和高
}
//實現接口ActionListener的監(jiān)聽方法,完成運算的主函數
public void actionPerformed(ActionEvent e){
CalcButton b=(CalcButton)e.getSource();//強制轉化
//將b.num的String型(字符串只有一個元素)轉化為char型,以便switch語句比較
char ch=b.num.charAt(0);
switch(ch){
//當輸入的b.num非符號時(/ * - + =)現實,并對str將其連接在str后面
case '.':case '0':case '1':case '2':case '3':case '4':
case '5':case '6':case '7':case '8':case '9':{
str2=str2.concat(b.num);
display.setText(str2);
}break;
//當輸入的b.num是符號時(/ * - +)不現實,并將str2附給str1,并使str2歸零以便繼續(xù)輸入
case '+': case '-':case '*':case '/':{
res=str2; str2=str1;
str1=res; sign=ch;
display.setText("");
}break;
case '=':{
float data1=0,data2=0;
data1=Float.parseFloat(str1);//將str1,2的String型轉化為data1,2的float型
data2=Float.parseFloat(str2);
switch(sign){
case '+':result=data1+data2;break;//運算
case '-':result=data1-data2;break;
case '*':result=data1*data2;break;
case '/':result=data1/data2;break;
default:display.setText("輸入有誤!!");
}
// 轉化類型把運算結果result從float型轉化到String型的res,
res=String.valueOf(result);
display.setText(res);//顯示結果res
str1="";str2="";//重新賦值,使str恢復初始狀態(tài)
}break;
}
}
public static void main(String[] args){//main
new Calculator().setVisible(true);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -