/*计ç®å¨*/
import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
public class Calculator implements ActionListener{
JFrame frame;
JPanel panel;
JTextField tfShow;/*å®ä¹æ¾ç¤ºææ¬æ¡*/
JButton b1[]=new JButton[10]; /*æ°åæé®*/
JButton b2[]=new JButton[6]; /*æä½æé®*/
boolean isNumber;/*å¤ææ¯å¦è¾å
¥å¤ä½æ°åçåé*/
double number;/*åå¨è¾å
¥æ°å¼ãæ¾ç¤ºç»æçåé*/
double result;/*åå¨ä¸é´è¿ç®ç»æçåé*/
char operator;/*åå¨å½åæä½ç¬¦çæååé*/
public Calculator(){
frame=new JFrame("计ç®å¨");
frame.setSize(300,300);/*æå®æ¡æ¶çªå£ç大å°*/
frame.setResizable(false);/*使æ¡æ¶çªå£ä¸å¯æ¹å大å°*/
JPanel contentPane=(JPanel)frame.getContentPane();
contentPane.setBorder(new EmptyBorder(20,20,20,20));/*ç»å¶æ¡æ¶çæå®å¤§å°ç空éæè¾¹æ¡*/
tfShow=new JTextField("0",25);/*æå®å±æ§çææ¬å*/
tfShow.setHorizontalAlignment(JTextField.RIGHT);/*设置ææ¬åä¸ææ¬ç对é½æ¹å¼*/
isNumber=true;/*åå§å¼è®¾ç½®*/
number=0;/*åå§å¼è®¾ç½®*/
result=0;/*åå§å¼è®¾ç½®*/
operator=' ';/*åå§å¼è®¾ç½®*/
for(int i=0;i<b1.length;i++){
b1[i]=new JButton(Integer.toString(i));/*å建æ°åæé®*/
b1[i].setActionCommand(Integer.toString(i));
b1[i].addActionListener(this);
b1[i].setForeground(Color.blue);
}
String bs[]={"/","*","-","C","+","="};
for(int i=0;i<b2.length;i++){
b2[i]=new JButton(bs[i]);/*å建æä½æé®*/
b2[i].setActionCommand(bs[i]);
b2[i].addActionListener(this);
b2[i].setForeground(Color.red);
}
panel=new JPanel();
panel.setLayout(new GridLayout(4,5));
panel.add(b1[1]);
panel.add(b1[2]);
panel.add(b1[3]);
panel.add(b2[0]);
panel.add(b1[4]);
panel.add(b1[5]);
panel.add(b1[6]);
panel.add(b2[1]);
panel.add(b1[7]);
panel.add(b1[8]);
panel.add(b1[9]);
panel.add(b2[2]);
panel.add(b1[0]);
panel.add(b2[3]);
panel.add(b2[4]);
panel.add(b2[5]);
frame.add(tfShow,BorderLayout.NORTH);/*å°ææ¬æ¡æ¾ç½®å¨æ¡æ¶ä¸æ¹*/
frame.add(panel,BorderLayout.CENTER);/*å°è£
ææé®ç»çpanelæ¾å¨æ¡æ¶çä¸å¿*/
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/*设置æ¡æ¶çªå£çé»è®¤çªå£å
³éæä½*/
frame.setVisible(true);/*设置æ¡æ¶å¯è§*/
}
public double getDisplay(){/*è¿åè¦æ¾ç¤ºçç»æ*/
return number;
}
public void reDisplay(){/*å·æ°ææ¬åçå
容*/
tfShow.setText(""+getDisplay());
}
/*对è¾å
¥æ°åçå¤ç*/
public void numberProcess(int num){
if(isNumber&&num!=0){
String s1=Integer.toString(num);
String s2=Integer.toString((int)(this.number));
this.number=Double.parseDouble(s2+s1);/*对å¤ä½æ°åçå¤ç*/
}else{
this.number=num;
}
isNumber=true;/*è¾å
¥è¿ç»æ°åï¼å³å¤ä½æ°åï¼æ¶ä¸ºç*/
}
public void operationProcess(char operator){/*æ ¹æ®è¾å
¥çæä½ç¬¦æ¹åå½åæä½ç¬¦*/
switch(operator){
case '-':
this.operator='-';
break;
case '+':
this.operator='+';
break;
case '*':
this.operator='*';
break;
case '/':
this.operator='/';
break;
}
result=number;
isNumber=false;/*è¾å
¥æä½ç¬¦æ¶è¡¨ç¤ºè¾å
¥è¿ç»æ°åçæ è®°åé为å*/
}
public void clear(){
number=0;
result=0;
}
public void equal(){/*计ç®è¿ç®ç»æ*/
switch(operator){
case '-':
result=result-number;
break;
case '+':
result=result+number;
break;
case '*':
result=result*number;
break;
case '/':
result=result/number;
break;
case ' ':
result=number;
break;
}
number=result; /*æè¿ç®ç»æèµå¼ç»æ¾ç¤ºåé*/
isNumber=false;
operator=' ';
}
public static void main(String args[]){
Calculator cal=new Calculator();/*å建计ç®å¨*/
}
public void actionPerformed(ActionEvent e){
String command=e.getActionCommand();/*è·åæé®æ¿åçæä½äºä»¶çå½ä»¤å称*/
char c=command.charAt(0);/*å°æé®å½ä»¤å称ç第ä¸ä¸ªå符èµå¼ç»ä¸ä¸ªå符c*/
switch(c){
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case '0':
int number=Integer.parseInt(command);
numberProcess(number);/*è¾å
¥æ°åçå¤ç*/
break;
case '+':
case '-':
case '*':
case '/':
operationProcess(c);/*ç®æ°è¿ç®ç¬¦çå¤ç*/
break;
case '=':equal();break;/*计ç®è¿ç®ç»æ*/
case 'C':clear();break;/*æ¸
é¶*/
}
reDisplay(); /*å¨ææ¬åä¸æ¾ç¤ºä¿¡æ¯*/
}
}
è¿è¡ç»æï¼
温馨提示:内容为网友见解,仅供参考