以下代码可以实现基础的计算器功能,我也是个新手写的烂见谅
这也是本账号的第一篇文章
我又发了一篇文章,里面更新了计算器的功能有兴趣可以看一下
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.regex.Pattern;
public class jiSuanQi extends Frame implements ActionListener {
StringBuilder shuRu = new StringBuilder(); //记录输入的值
double shuA, shuB; //记录操作数"shuA""shuB"
Double out; //记录运算结果"out"
int yunSuan = 0; //记录运算 0为空 1为+ 2为- 3为× 4为÷
JTextArea jieGuo = new JTextArea("0", 1, 12); //创建文本框大小和默认文字
public static void main(String[] args) {
jiSuanQi jiSuanQi = new jiSuanQi(); //主类调用计算器
}
public jiSuanQi() {
//创建主窗口
JFrame chuangKou = new JFrame("计算器"); //创建窗口命名“计算器”
chuangKou.setLayout(new BorderLayout()); //设置布局为BorderLayout
//编辑显示区域
JPanel xianShi = new JPanel(); //创建“显示”面板
jieGuo.setFont(new Font("微软雅黑", Font.BOLD, 30)); //设置字体
jieGuo.setBounds(0, 0, 10, 10);
jieGuo.setBackground(Color.white); //设置背景为白色
jieGuo.setEditable(false); //设置文本域不可编辑
xianShi.add(jieGuo); //把计算结果加入面板
//创建键盘区域
JPanel jianPan = new JPanel(); //创建键盘面板
jianPan.setLayout(new GridLayout(4, 4, 6, 6)); //设置布局样式为4行4列间隔6
Dimension anNiuDaXiao = new Dimension(6, 60); //设置按钮大小
String ziFu = "789+456-123×.0=÷"; //设置按钮顺序
for (int i = 0; i < ziFu.length(); i++) { //循环向键盘区域添加按钮
anNiu(ziFu.charAt(i) + "", jianPan, anNiuDaXiao);
}
//向窗口添加“显示区域”和“键盘区域”
chuangKou.add(xianShi, BorderLayout.NORTH); //显示区域加到窗口上面
chuangKou.add(jianPan, BorderLayout.SOUTH); //键盘区域加到窗口下面
//设置大小及显示窗口
chuangKou.setBounds(800, 100, 400, 400); //设置窗口位置和大小
chuangKou.setResizable(false); //设置窗口大小无法更改
chuangKou.setDefaultCloseOperation(chuangKou.EXIT_ON_CLOSE); //关闭窗口即结束程序
chuangKou.setVisible(true); //显示窗口
}
public void anNiu(String title, JPanel jianPan, Dimension anNiuDaXiao) { //设置按钮
JButton button = new JButton(title); //建立按钮并设置显示符号
button.setPreferredSize(anNiuDaXiao); //设置按钮大小
button.setFont(new Font("微软雅黑", Font.BOLD, 30)); //设置按钮字体
if (isNumeric(title)) { //判断传入“title”是否为数字
button.setBackground(new Color(230, 230, 250)); //是数字则更改背景为定义的颜色,当前为淡紫色
} else {
button.setBackground(new Color(240, 248, 255)); //否则更改为定义的颜色,当前为淡蓝色
}
button.addActionListener(this); //添加监听
jianPan.add(button); //向“键盘”添加按钮
}
public static boolean isNumeric(String str) { //判断传入字符串是否为数字
Pattern pattern = Pattern.compile("\\d*"); //通过正则表达式判断是否为数字
return pattern.matcher(str).matches(); //返回结果
}
@Override
public void actionPerformed(ActionEvent an) { //重写接口以响应按钮
String in = an.getActionCommand(); //获取按钮输入
//判断按下的按钮并做出响应
switch (in) { //依次判断按下的按钮
case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" -> { //判断输入是否包含在0-9中
System.out.println("按下了" + in); //在控制台输出按下的按钮
shuRu.append(in); //在数字末尾加入按钮输入的值
jieGuo.setText(shuRu.toString()); //刷新显示的数字
}
case "+", "-", "×", "÷" -> { //判断按下的按钮是”+“
System.out.println("按下了" + in); //在控制台输出按下的按钮
shuA = Double.parseDouble(shuRu.toString()); //记录"运算数A"
switch (in) { //判断运算符并记录
case "+" -> yunSuan = 1; //记录“+”为1
case "-" -> yunSuan = 2; //记录“-”为2
case "×" -> yunSuan = 3; //记录“×”为3
case "÷" -> yunSuan = 4; //记录“÷”为4
}
shuRu = new StringBuilder(); //清空输入的数字
jieGuo.setText(in); //显示运算符
}
case "=" -> { //判断按下的按钮是”=“ 以下注释同”+“的部分
System.out.println("按下了" + in); //在控制台输出按下的按钮
shuB = Double.parseDouble(shuRu.toString()); //记录”运算数B“
switch (yunSuan) { //执行运算//判断执行何种运算
case 1 -> out = shuA + shuB; //执行加法
case 2 -> out = shuA - shuB; //执行减法
case 3 -> out = shuA * shuB; //执行乘法
case 4 -> out = shuA / shuB; //执行除法
}
jieGuo.setText(out.toString()); //输出结果
shuRu = new StringBuilder(); //重置输入的数字
}
}
}
}