用Java语言,GUI知识,swing知识写一个计算器小程序包括数字和加减乘除小数点的功能,且每段代码做出解释
时间: 2023-06-13 07:06:07 浏览: 98
好的,下面是Java语言、GUI和Swing知识的代码实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener {
// 创建数字、加减乘除、小数点按钮
JButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, bDot, bAdd, bSub, bMul, bDiv;
// 创建文本框
JTextField tf;
// 定义变量
double num1, num2, result;
int operator;
// 构造函数
Calculator() {
// 设置标题
setTitle("Calculator");
// 设置布局管理器
setLayout(new BorderLayout());
// 创建面板
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
// 创建文本框
tf = new JTextField(20);
// 设置面板1的布局管理器
p1.setLayout(new GridLayout(4, 4, 5, 5));
// 创建按钮
b7 = new JButton("7");
b8 = new JButton("8");
b9 = new JButton("9");
bDiv = new JButton("/");
b4 = new JButton("4");
b5 = new JButton("5");
b6 = new JButton("6");
bMul = new JButton("*");
b1 = new JButton("1");
b2 = new JButton("2");
b3 = new JButton("3");
bSub = new JButton("-");
b0 = new JButton("0");
bDot = new JButton(".");
JButton bEqual = new JButton("=");
bAdd = new JButton("+");
// 添加按钮到面板1
p1.add(b7);
p1.add(b8);
p1.add(b9);
p1.add(bDiv);
p1.add(b4);
p1.add(b5);
p1.add(b6);
p1.add(bMul);
p1.add(b1);
p1.add(b2);
p1.add(b3);
p1.add(bSub);
p1.add(b0);
p1.add(bDot);
p1.add(bEqual);
p1.add(bAdd);
// 添加面板和文本框到窗口
add(tf, BorderLayout.NORTH);
add(p1, BorderLayout.CENTER);
add(p2, BorderLayout.SOUTH);
// 添加事件监听器
b0.addActionListener(this);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
bDot.addActionListener(this);
bAdd.addActionListener(this);
bSub.addActionListener(this);
bMul.addActionListener(this);
bDiv.addActionListener(this);
bEqual.addActionListener(this);
// 设置窗口属性
setSize(250, 300);
setLocationRelativeTo(null);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
// 获取按钮上的文本
String str = e.getActionCommand();
// 判断是否是数字按钮
if (str.equals("0") || str.equals("1") || str.equals("2") || str.equals("3") || str.equals("4")
|| str.equals("5") || str.equals("6") || str.equals("7") || str.equals("8") || str.equals("9")
|| str.equals(".")) {
// 将文本框中的内容转成字符串
String s = tf.getText();
// 如果文本框中的内容为空或为0,则直接显示输入的数字或小数点
if (s.equals("") || s.equals("0")) {
tf.setText(str);
} else {
// 否则在文本框的内容后面添加输入的数字或小数点
tf.setText(s + str);
}
} else if (str.equals("+")) { // 判断是否是加号按钮
num1 = Double.parseDouble(tf.getText()); // 获取第一个数
operator = 1; // 设置操作符为加号
tf.setText(""); // 清空文本框
} else if (str.equals("-")) { // 判断是否是减号按钮
num1 = Double.parseDouble(tf.getText()); // 获取第一个数
operator = 2; // 设置操作符为减号
tf.setText(""); // 清空文本框
} else if (str.equals("*")) { // 判断是否是乘号按钮
num1 = Double.parseDouble(tf.getText()); // 获取第一个数
operator = 3; // 设置操作符为乘号
tf.setText(""); // 清空文本框
} else if (str.equals("/")) { // 判断是否是除号按钮
num1 = Double.parseDouble(tf.getText()); // 获取第一个数
operator = 4; // 设置操作符为除号
tf.setText(""); // 清空文本框
} else if (str.equals("=")) { // 判断是否是等号按钮
num2 = Double.parseDouble(tf.getText()); // 获取第二个数
// 根据操作符进行计算
switch (operator) {
case 1:
result = num1 + num2;
break;
case 2:
result = num1 - num2;
break;
case 3:
result = num1 * num2;
break;
case 4:
result = num1 / num2;
break;
default:
break;
}
// 显示计算结果
tf.setText(String.valueOf(result));
}
}
public static void main(String[] args) {
new Calculator();
}
}
```
代码解释:
1. 首先导入必要的GUI和Swing类库。
2. 创建数字、加减乘除、小数点按钮和文本框。
3. 在构造函数中设置窗口属性,创建面板,并将按钮和文本框添加到窗口中。
4. 为按钮添加事件监听器。
5. 在事件监听器中,根据按钮的文本判断执行相应的操作。
6. 最后在main()方法中创建Calculator对象,启动程序。
上述代码实现了基本的计算器功能,包括数字和加减乘除小数点的功能。每个部分都有注释,方便理解。
阅读全文