import java.awt.*; // 引入awt包中的所有类
import java.awt.event.ActionEvent; // 引入awt.event包中的ActionEvent类
import java.awt.event.ActionListener; // 引入awt.event包中的ActionListener类
public class Calculator { // 定义Calculator类
Frame f = new Frame(“计算器”); // 创建一个Frame对象f并设置标题为“计算器”
TextField tf = new TextField(); // 创建一个TextField对象tf
Panel p1 = new Panel(); // 创建一个Panel对象p1,用于放置数字按钮和运算符按钮
Button[] nums = new Button[10]; // 创建一个长度为10的Button数组nums,用于存放数字按钮 Button add = new Button(“+”); // 创建一个加号按钮add Button minus = new Button(“-”); // 创建一个减号按钮minus Button multiply = new Button(“*”); // 创建一个乘号按钮multiply Button divide = new Button(“/”); // 创建一个除号按钮divide Button equal = new Button(“=”); // 创建一个等号按钮equal Button clear = new Button(“C”); // 创建一个清零按钮clear
String firstNum=“”; // 存储第一次输入的数字
String secondNum=""; // 存储第二次输入的数字
String operator=""; // 存储运算符
ActionListener listener=new ActionListener(){
public void actionPerformed(ActionEvent e){
String actionCommand=e.getActionCommand();
if(actionCommand.equals("C")){
tf.setText("");
firstNum="";
secondNum="";
operator="";
}else if(actionCommand.equals("+")||actionCommand.equals("-")||actionCommand.equals("*")||actionCommand.equals("/")){
operator=actionCommand;
firstNum=tf.getText().trim();
tf.setText("");
}else if(actionCommand.equals("=")){
secondNum=tf.getText().trim();
double a=Double.parseDouble(firstNum);
double b=Double.parseDouble(secondNum);
double result=0;
switch(operator){
case "+":result=a+b;break;
case "-":result=a-b;break;
case "*":result=a*b;break;
case "/":result=a/b;break; }
tf.setText(result+""); // 将计算结果输出到文本框中
}else{
tf.setText(tf.getText()+actionCommand);
}
}
};
void init() { // 定义一个初始化方法
p1.setLayout(new GridLayout(4,4,5,5)); // 设置p1的布局为4行4列的GridLayout,并指定行间距为5,列间距为5
for(int i=0;i<10;i++){ // 循环创建数字按钮,并将其添加到p1中 nums[i] = new Button(“”+i); p1.add(nums[i]); nums[i].addActionListener(listener); }
add.addActionListener(listener); // 将listener对象注册为加号按钮的事件监听器 minus.addActionListener(listener); // 将listener对象注册为减号按钮的事件监听器 multiply.addActionListener(listener); // 将listener对象注册为乘号按钮的事件监听器 divide.addActionListener(listener); // 将listener对象注册为除号按钮的事件监听器
equal.addActionListener(listener); // 将listener对象注册为等号按钮的事件监听器
clear.addActionListener(listener); // 将listener对象注册为清零按钮的事件监听器
p1.add(add); // 将加号按钮添加到p1中 p1.add(minus); // 将减号按钮添加到p1中 p1.add(multiply); // 将乘号按钮添加到p1中 p1.add(divide); // 将除号按钮添加到p1中
tf.setEditable(false);
f.add(tf,BorderLayout.NORTH); // 将tf添加到f窗口的北部 f.add(p1,BorderLayout.CENTER); // 将p1添加到f窗口的中间
Panel p2=new Panel();
p2.setLayout(new GridLayout(4,2,5,5));
p2.add(equal);
p2.add(clear);
f.add(p2,BorderLayout.EAST);
f.setSize(300,250); // 设置f窗口的大小为300*250像素 f.setVisible(true); // 设置f窗口可见 }
public static void main(String[] args) { // 主方法
new Calculator().init(); // 创建一个Calculator对象并调用初始化方法 } }