这里提供一个简单的计算器实现,只包含加减乘除和清零功能。代码如下:
import java.awt.*; // 引入awt包中的所有类 import java.awt.event.ActionEvent; // 引入awt.event包中的ActionEvent类 import java.awt.event.ActionListener; // 引入awt.event包中的ActionListener类
public class Calculator {
Frame f = new Frame("简单计算器"); // 创建一个Frame对象f并设置标题为“简单计算器”
Panel p1 = new Panel(); // 创建一个Panel对象p1,用于放置文本框
Panel p2 = new Panel(); // 创建一个Panel对象p2,用于放置按钮
TextField tf = new TextField(20); // 创建一个TextField对象tf,并设置宽度为20个字符
Button bAdd = new Button("+"); // 创建加号按钮
Button bSubtract = new Button("-"); // 创建减号按钮
Button bMultiply = new Button("*"); // 创建乘号按钮
Button bDivide = new Button("/"); // 创建除号按钮
Button bClear = new Button("清零"); // 创建清零按钮
double num1, num2, result; // 定义两个操作数和结果变量
void init() { // 初始化方法,布局界面并添加事件监听器
tf.setEditable(false); // 设置文本框不可编辑
p1.add(tf); // 将文本框添加到p1面板中
ActionListener al = new ActionListener() { // 定义一个ActionListener匿名内部类来处理按钮点击事件
@Override
public void actionPerformed(ActionEvent e) { // 实现ActionListener接口的抽象方法
if (e.getSource() == bClear) { // 如果是清零按钮被点击了
tf.setText(""); // 清空文本框内容
num1 = num2 = result = 0; // 将操作数和结果都设为0
} else { // 如果是其他运算符被点击了
String s = tf.getText(); // 获取文本框中的内容
try {
num1 = Double.parseDouble(s); // 将字符串转化为double类型,作为第一个操作数
} catch (NumberFormatException ex) {
tf.setText("格式错误"); // 如果转换失败,则显示“格式错误”信息在文本框中,并返回
return;
}
tf.setText(""); // 清空文本框内容
if (e.getSource() == bAdd) { // 判断哪个运算符被点击了,并进行相应的运算
result = num1;
} else if (e.getSource() == bSubtract) {
result = num1;
} else if (e.getSource() == bMultiply) {
result = num1;
} else if (e.getSource() == bDivide) {
result = num1;
}
}
}
};
bAdd.addActionListener(al); // 将监听器注册到加号按钮上
bSubtract.addActionListener(al); // 将监听器注册到减号按钮上
bMultiply.addActionListener(al); // 将监听器注册到乘号按钮上
bDivide.addActionListener(al); // 将监听器注册到除号按钮上
bClear.addActionListener(al); // 将监听器注册到清零按钮上
p2.setLayout(new GridLayout(4, 1)); // 设置p2的布局为4行1列的网格布局
p2.add(bAdd); // 将加号按钮添加到p2中
p2.add(bSubtract); // 将减号按钮添加到p2中
p2.add(bMultiply); // 将乘号按钮添加到p2中
p2.add(bDivide); // 将除号按钮添加到p2中
f.add(p1, BorderLayout.NORTH); // 将p1面板放置在窗口的北部位置
f.add(p2, BorderLayout.CENTER); // 将p2面板放置在窗口的中央位置
f.add(bClear, BorderLayout.SOUTH); // 将清零按钮放置在窗口的南部位置
f.setSize(200, 150); // 设置窗口大小为200*150像素
f.setVisible(true); // 显示窗口
}
public static void main(String[] args) { // 主方法,创建Calculator对象并调用初始化方法init()
new Calculator().init();
}
}