用Java语言,GUI知识,swing知识写一个计算器小程序,要有数字,加减乘除,小数点,三角函数,要求实现运算,和每一步给出注释
时间: 2024-01-13 10:03:01 浏览: 90
好的,以下是一个简单的计算器小程序的代码,注释已经写好了:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
// 定义计算器的各个组件
private JPanel panel;
private JTextField display;
private JButton button0, button1, button2, button3, button4, button5, button6, button7, button8, button9;
private JButton buttonAdd, buttonSub, buttonMul, buttonDiv, buttonDot, buttonSin, buttonCos, buttonTan;
private JButton buttonClear, buttonEqual;
// 定义计算器的当前状态
private String operator; // 当前使用的运算符
private double operand1; // 第一个操作数
private boolean isDecimal; // 是否已经输入了小数点
// 构造函数,创建计算器界面
public Calculator() {
super("Calculator");
// 创建计算器的各个组件,并设置布局
panel = new JPanel(new GridLayout(5, 4));
display = new JTextField("0", 20);
display.setEditable(false);
button0 = new JButton("0");
button1 = new JButton("1");
button2 = new JButton("2");
button3 = new JButton("3");
button4 = new JButton("4");
button5 = new JButton("5");
button6 = new JButton("6");
button7 = new JButton("7");
button8 = new JButton("8");
button9 = new JButton("9");
buttonAdd = new JButton("+");
buttonSub = new JButton("-");
buttonMul = new JButton("*");
buttonDiv = new JButton("/");
buttonDot = new JButton(".");
buttonSin = new JButton("sin");
buttonCos = new JButton("cos");
buttonTan = new JButton("tan");
buttonClear = new JButton("C");
buttonEqual = new JButton("=");
// 将组件添加到面板中
panel.add(buttonSin);
panel.add(buttonCos);
panel.add(buttonTan);
panel.add(buttonClear);
panel.add(button7);
panel.add(button8);
panel.add(button9);
panel.add(buttonDiv);
panel.add(button4);
panel.add(button5);
panel.add(button6);
panel.add(buttonMul);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(buttonSub);
panel.add(button0);
panel.add(buttonDot);
panel.add(buttonEqual);
panel.add(buttonAdd);
// 添加事件监听器
button0.addActionListener(this);
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
button6.addActionListener(this);
button7.addActionListener(this);
button8.addActionListener(this);
button9.addActionListener(this);
buttonAdd.addActionListener(this);
buttonSub.addActionListener(this);
buttonMul.addActionListener(this);
buttonDiv.addActionListener(this);
buttonDot.addActionListener(this);
buttonSin.addActionListener(this);
buttonCos.addActionListener(this);
buttonTan.addActionListener(this);
buttonClear.addActionListener(this);
buttonEqual.addActionListener(this);
// 将面板和文本框添加到窗口中
add(panel, BorderLayout.CENTER);
add(display, BorderLayout.NORTH);
// 设置窗口属性
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setLocationRelativeTo(null);
setVisible(true);
// 初始化计算器状态
operator = "";
operand1 = 0;
isDecimal = false;
}
// 处理按钮点击事件
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("C")) {
// 点击清除按钮,重置计算器状态
operator = "";
operand1 = 0;
isDecimal = false;
display.setText("0");
} else if (command.equals("=")) {
// 点击等于按钮,执行计算并显示结果
double operand2 = Double.parseDouble(display.getText());
double result = 0;
if (operator.equals("+")) {
result = operand1 + operand2;
} else if (operator.equals("-")) {
result = operand1 - operand2;
} else if (operator.equals("*")) {
result = operand1 * operand2;
} else if (operator.equals("/")) {
result = operand1 / operand2;
} else if (operator.equals("sin")) {
result = Math.sin(operand2);
} else if (operator.equals("cos")) {
result = Math.cos(operand2);
} else if (operator.equals("tan")) {
result = Math.tan(operand2);
}
display.setText(String.valueOf(result));
operator = "";
operand1 = 0;
isDecimal = false;
} else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
// 点击加减乘除按钮,记录当前运算符和第一个操作数
operator = command;
operand1 = Double.parseDouble(display.getText());
isDecimal = false;
} else if (command.equals("sin") || command.equals("cos") || command.equals("tan")) {
// 点击三角函数按钮,记录当前运算符
operator = command;
isDecimal = false;
} else if (command.equals(".")) {
// 点击小数点按钮,记录已经输入了小数点
if (!isDecimal) {
display.setText(display.getText() + ".");
isDecimal = true;
}
} else {
// 点击数字按钮,将数字添加到显示框中
if (display.getText().equals("0")) {
display.setText(command);
} else {
display.setText(display.getText() + command);
}
}
}
// 程序入口,创建计算器对象
public static void main(String[] args) {
new Calculator();
}
}
```
这个计算器界面比较简单,只有一个文本框和一些按钮,但是已经实现了数字、加减乘除、小数点、三角函数等基本功能。
阅读全文