基于swing生成计算器带注释
时间: 2023-08-13 11:05:05 浏览: 103
自己做的一个计算器,里面包含注释!
好的,我可以帮您生成一个基于Swing的计算器,并添加注释以便您更好地理解代码。以下是代码和注释:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextField textField; // 文本框用于显示输入和结果
private JButton[] buttons; // 数字和运算符按钮
private String[] buttonLabels = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "C", "+"}; // 按钮标签
private double num1, num2; // 存储计算的两个数字
private char operator; // 存储运算符
public Calculator() {
setTitle("Calculator"); // 设置窗口标题
setSize(300, 300); // 设置窗口大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序
// 创建文本框并设置字体、大小和对齐方式
textField = new JTextField();
textField.setFont(new Font("Arial", Font.PLAIN, 18));
textField.setHorizontalAlignment(JTextField.RIGHT);
// 创建按钮并设置字体和大小
buttons = new JButton[buttonLabels.length];
for (int i = 0; i < buttonLabels.length; i++) {
buttons[i] = new JButton(buttonLabels[i]);
buttons[i].setFont(new Font("Arial", Font.PLAIN, 18));
buttons[i].addActionListener(this); // 每个按钮都添加一个 ActionListener
}
// 将文本框和按钮添加到窗口中
JPanel panel = new JPanel(new GridLayout(5, 4)); // 创建一个网格布局的面板
panel.add(textField);
for (int i = 0; i < buttonLabels.length; i++) {
panel.add(buttons[i]);
}
add(panel);
setVisible(true); // 显示窗口
}
// 处理按钮点击事件
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand(); // 获取按钮标签
double result; // 存储计算结果
try {
// 如果点击的是数字或小数点
Double.parseDouble(label); // 尝试将标签转换为 double 类型,如果能转换,说明是数字或小数点
textField.setText(textField.getText() + label); // 将数字或小数点添加到文本框中
} catch (NumberFormatException ex) {
// 如果点击的是运算符或清除按钮
switch (label) {
case "/":
case "*":
case "-":
case "+":
num1 = Double.parseDouble(textField.getText()); // 获取第一个数字
operator = label.charAt(0); // 获取运算符
textField.setText(""); // 清空文本框
break;
case "=":
num2 = Double.parseDouble(textField.getText()); // 获取第二个数字
switch (operator) { // 根据运算符计算结果
case '/':
result = num1 / num2;
break;
case '*':
result = num1 * num2;
break;
case '-':
result = num1 - num2;
break;
case '+':
result = num1 + num2;
break;
default:
result = 0;
break;
}
textField.setText(Double.toString(result)); // 显示结果
break;
case "C":
textField.setText(""); // 清空文本框
break;
}
}
}
public static void main(String[] args) {
new Calculator(); // 创建计算器对象
}
}
```
注释已经在代码中添加了,希望能够帮助您理解代码的实现过程。如果您有任何问题,欢迎随时向我提出。
阅读全文