📄 my_caculator.java
字号:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
public class My_caculator extends Applet implements ActionListener {
Panel pn,pc,pe; //定义3个PANEL,分别来装文本框,数字按纽,控制按纽
JButton digit[]=new JButton[12]; //定义数字键按纽,包括小数点,和等号
JButton caculate[]=new JButton[4]; //定义运算符
JButton control[]=new JButton[2]; //定义控制按纽,包括退格和清空
JTextField DisplayText;
double c1=0.0,c2=0.0; //运算的两个数
char flag='n'; //标志按了哪个运算符,初始为n,表示什么运算符没按
public void init() {
//------------------PANEL的初始化-------
pn=new Panel();
pe=new Panel();
pc=new Panel();
setLayout(new BorderLayout(8,10));
add(pn,BorderLayout.NORTH);
add(pe,BorderLayout.EAST);
add(pc,BorderLayout.CENTER);
//------------------------------------
//-----------计算器显示框初始化-------------
DisplayText=new JTextField(23);
pn.add(DisplayText);
DisplayText.setText("0");
DisplayText.setHorizontalAlignment(JTextField.RIGHT);
DisplayText.setForeground(Color.blue);
DisplayText.setEditable(false);
//------------------------------------
//--------------控制按纽初始化--------------
control[0]=new JButton("退格");
control[1]=new JButton("清零");
pe.setLayout(new GridLayout(2,1,10,10));
pe.add(control[0]);
pe.add(control[1]);
//----------------------------------------
//----------------数字按纽以及运算按纽初始化-----
caculate[0]=new JButton("+");
caculate[1]=new JButton("-");
caculate[2]=new JButton("*");
caculate[3]=new JButton("/");
for(int i=0;i<10;i++)
digit[i]=new JButton(String.valueOf(i));
digit[10]=new JButton(".");
digit[11]=new JButton("=");
pc.setLayout(new GridLayout(4,4,8,8));
for(int i=7;i<=9;i++)
pc.add(digit[i]);
pc.add(caculate[0]);
for(int i=4;i<=6;i++)
pc.add(digit[i]);
pc.add(caculate[1]);
for(int i=1;i<=3;i++)
pc.add(digit[i]);
pc.add(caculate[2]);
pc.add(digit[0]);
pc.add(digit[10]);
pc.add(digit[11]);
pc.add(caculate[3]);
//-----------------------------------------
//----------注册监听及按纽颜色-----------------------------------------------------
for(int i=0;i<12;i++){
digit[i].addActionListener(this);
digit[i].setForeground(Color.blue);
if(i<4){caculate[i].addActionListener(this);caculate[i].setForeground(Color.red);}
if(i<2){control[i].addActionListener(this);control[i].setForeground(Color.red);}
}
digit[11].setForeground(Color.red);
//-------------------------------------------------------------------------------
}
public void actionPerformed(ActionEvent e){
if(e.getActionCommand().charAt(0)>='1'&& e.getActionCommand().charAt(0)<='9'){ //按的是数字键
if(DisplayText.getText().indexOf('0')==0&&DisplayText.getText().indexOf('.')<0)DisplayText.setText("");
DisplayText.setText(DisplayText.getText()+e.getActionCommand());
}
else if(e.getActionCommand().equals("0")){ //按的是0
if(DisplayText.getText().indexOf('0')!=0||DisplayText.getText().indexOf('.')>=0)
DisplayText.setText(DisplayText.getText()+e.getActionCommand());
}
else if(e.getActionCommand().equals(".")){ //按的是小数点
if(DisplayText.getText().indexOf('.')<0)
DisplayText.setText(DisplayText.getText()+e.getActionCommand());
}
else if(e.getActionCommand().equals("+")||e.getActionCommand().equals("-")||e.getActionCommand().equals("*")||e.getActionCommand().equals("/")) { //按的是运算符
c1=Double.parseDouble(DisplayText.getText());
DisplayText.setText("");
switch(e.getActionCommand().charAt(0)){
case '+':flag='p';break;
case '-':flag='m';break;
case '*':flag='t';break;
case '/':flag='d';
}
}
else if(e.getActionCommand().equals("=")) //按的是等号
switch(flag){
case 'p':c2=Double.parseDouble(DisplayText.getText());c1+=c2;DisplayText.setText(String.valueOf(c1));break;
case 'm':c2=Double.parseDouble(DisplayText.getText());c1-=c2;DisplayText.setText(String.valueOf(c1));break;
case 't':c2=Double.parseDouble(DisplayText.getText());c1*=c2;DisplayText.setText(String.valueOf(c1));break;
case 'd':c2=Double.parseDouble(DisplayText.getText());if(c2==0.0)DisplayText.setText("被除数不能为零");else {c1/=c2;DisplayText.setText(String.valueOf(c1));}break;
case 'n':c1=0;DisplayText.setText("老大,还没有按运算符呢!");
}
else if(e.getActionCommand().equals("清零")){ //按的是清零
c1=c2=0.0;
DisplayText.setText("0");
flag='n';
}
else { //按的是退格
if(DisplayText.getText().equals("0"));
else if(DisplayText.getText().length()==1)
DisplayText.setText("0");
else
DisplayText.setText(DisplayText.getText().substring(0,DisplayText.getText().length()-1));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -