JavaSwing实现高级计算器

编程入门 行业动态 更新时间:2024-10-09 01:19:42

JavaSwing实现高级<a href=https://www.elefans.com/category/jswz/34/1765079.html style=计算器"/>

JavaSwing实现高级计算器

文章目录

  • 一、项目介绍
  • 二、效果预览
  • 三、主要代码演示
    • 1. 页面布局
    • 2.三角函数sin、cos、tan
    • 3.运算符+,-,*,/,%,=

一、项目介绍

本项目主要使用Java语言,利用JavaSwing实现可视化界面的高级计算器,可以支持cos、sin、tan三角函数运算,MR、MS、MC高级操作,±*/%基础运算,ln函数等等功能,结果计算准确,且考虑到运算符的优先级,所以可以支持连续运算等。

二、效果预览

三、主要代码演示

1. 页面布局

JPanel resultField = new JPanel();
JPanel buttonField = new JPanel();
Container all = getContentPane();
GridLayout gridl;
gridl = new GridLayout(4, 6, 3, 3);
clear.setFont(font);
memoryArea.setFont(font);
dispresult.setFont(font);
memoryArea.setEditable(false);
clear.addActionListener(this);
dispresult.setEditable(false);
resultField.add(memoryArea);
resultField.add(clear);
resultField.add(dispresult);
all.setLayout(new FlowLayout());
all.add(resultField);
//定义按钮,顺序与显示位置有关
String[] buttonname = {"sin", "MC", "0", "1", "2", "+", "√X","cos", "MR", "3", "4", "5", "-", "X^2","tan", "MS", "6", "7", "8", "x", "+/-", "ln"," M+", "9", ".", "=", "/", "%"};
buttonField.setLayout(gridl);
//分4行显示,每行7个
for (int i = 0; i < 7; i++) {for (int j = 0; j < 4; j++) {jbuttons[i * 4 + j] = new JButton(buttonname[i * 4 + j]);jbuttons[i * 4 + j].addActionListener(this);jbuttons[i * 4 + j].setFont(font);buttonField.add(jbuttons[i * 4 + j]);}
}
all.add(buttonField);
//设置窗口大小
setSize(490, 220);
setResizable(true);setVisible(true);

2.三角函数sin、cos、tan

//sin
if (source == jbuttons[0]) {double temp = Math.sin(Double.parseDouble(dispresult.getText()));dispresult.setText(String.valueOf(temp));prev = true;repeat = false;dot = true;return;
}
//cos
if (source == jbuttons[7]) {double temp = Math.cos(Double.parseDouble(dispresult.getText()));dispresult.setText(String.valueOf(temp));prev = true;repeat = false;dot = true;return;
}
//tan
if (source == jbuttons[14]) {double temp = Math.tan(Double.parseDouble(dispresult.getText()));dispresult.setText(String.valueOf(temp));prev = true;repeat = false;dot = true;return;
}

3.运算符+,-,*,/,%,=

//加法
if (source == jbuttons[5]) {dot = true;if (repeat) {firstsymbol = '+';return;}second = Double.parseDouble(dispresult.getText());switch (secondsymbol) {case '*':second *= first;break;case '/':if (divide(second)) return;second = first / second;}// end of switch (secondsymbol)secondsymbol = '\0';switch (firstsymbol) {case '\0':result = second;firstsymbol = '+';break;case '+':result += second;dispresult.setText(String.valueOf(result));break;case '-':result -= second;firstsymbol = '+';dispresult.setText(String.valueOf(result));break;case '*':result *= second;firstsymbol = '+';dispresult.setText(String.valueOf(result));break;case '/':if (divide(second)) return;result /= second;firstsymbol = '+';dispresult.setText(String.valueOf(result));case '%':result %= second;firstsymbol = '+';dispresult.setText(String.valueOf(result));}//end of switch (firstsymbol)prev = true;repeat = true;return;
}
//减法
if (source == jbuttons[12]) {dot = true;if (repeat) {firstsymbol = '-';return;}second = Double.parseDouble(dispresult.getText());switch (secondsymbol) {case '*':second *= first;break;case '/':if (divide(second)) return;second = first / second;break;case '%':second %= first;}secondsymbol = '\0';switch (firstsymbol) {case '\0':result = second;firstsymbol = '-';break;case '+':result += second;firstsymbol = '-';dispresult.setText(String.valueOf(result));break;case '-':result -= second;dispresult.setText(String.valueOf(result));break;case '*':result *= second;firstsymbol = '-';dispresult.setText(String.valueOf(result));break;case '/':if (divide(second)) return;result /= second;firstsymbol = '-';dispresult.setText(String.valueOf(result));break;case '%':result %= second;firstsymbol = '-';dispresult.setText(String.valueOf(result));}prev = true;repeat = true;return;
}
//乘法
if (source == jbuttons[19]) {dot = true;if (repeat) {if (secondsymbol == '\0') firstsymbol = '*';else secondsymbol = '*';return;}second = Double.parseDouble(dispresult.getText());switch (secondsymbol) {case '\0':switch (firstsymbol) {case '\0':firstsymbol = '*';result = second;break;case '+':case '-':first = second;secondsymbol = '*';break;case '*':result *= second;dispresult.setText(String.valueOf(result));break;case '/':if (divide(second)) return;result /= second;dispresult.setText(String.valueOf(result));firstsymbol = '*';break;case '%':result %= second;firstsymbol = '*';dispresult.setText(String.valueOf(result));}break;case '*':first *= second;dispresult.setText(String.valueOf(first));break;case '/':if (divide(second)) return;first /= second;secondsymbol = '*';dispresult.setText(String.valueOf(first));break;case '%':result %= second;firstsymbol = '*';dispresult.setText(String.valueOf(result));}prev = true;repeat = true;return;
}
//等于
if (source == jbuttons[25]) {second = Double.parseDouble(dispresult.getText());dot = true;switch (secondsymbol) {case '*':second *= first;break;case '/':if (divide(second)) return;second = first / second;}// end of Switch ( secondsymbol )secondsymbol = '\0';switch (firstsymbol) {case '+':result += second;break;case '-':result -= second;break;case '*':result *= second;dispresult.setText(String.valueOf(result));break;case '/':if (divide(second)) return;result /= second;break;case '%':result %= second;dispresult.setText(String.valueOf(result));break;}// end of switch (firstsymbo1)if (firstsymbol != '\0')dispresult.setText(String.valueOf(result));firstsymbol = '\0';prev = true;repeat = false;return;
}
//除法
if (source == jbuttons[26]) {dot = true;if (repeat) {if (secondsymbol == '\0') firstsymbol = '/';else secondsymbol = '/';return;}second = Double.parseDouble(dispresult.getText());switch (secondsymbol) {case '\0':switch (firstsymbol) {case '\0':firstsymbol = '/';result = second;break;case '+':case '-':first = second;secondsymbol = '/';break;case '*':result *= second;firstsymbol = '/';dispresult.setText(String.valueOf(result));break;case '/':if (divide(second)) return;result /= second;dispresult.setText(String.valueOf(result));break;case '%':result %= second;firstsymbol = '/';dispresult.setText(String.valueOf(result));}//end of switch ( first symbol)break;case '*':first *= second;secondsymbol = '/';dispresult.setText(String.valueOf(first));break;case '/':if (divide(second)) return;first /= second;dispresult.setText(String.valueOf(first));break;case '%':result %= second;firstsymbol = '/';dispresult.setText(String.valueOf(result));}// end of switch (secondsymbo1)prev = true;repeat = true;return;
}
//取模
if (source == jbuttons[27]) {dot = true;if (repeat) {if (secondsymbol == '\0') firstsymbol = '%';else secondsymbol = '%';return;}second = Double.parseDouble(dispresult.getText());switch (secondsymbol) {case '\0':switch (firstsymbol) {case '\0':firstsymbol = '%';result = second;break;case '+':case '-':first = second;secondsymbol = '%';break;case '*':result *= second;firstsymbol = '%';dispresult.setText(String.valueOf(result));break;case '/':if (divide(second)) return;result /= second;firstsymbol = '%';dispresult.setText(String.valueOf(result));break;case '%':result %= second;dispresult.setText(String.valueOf(result));}//end of switch ( first symbol)break;case '*':first *= second;secondsymbol = '%';dispresult.setText(String.valueOf(first));break;case '/':if (divide(second)) return;first /= second;secondsymbol = '%';dispresult.setText(String.valueOf(first));break;case '%':result %= second;dispresult.setText(String.valueOf(result));}// end of switch (secondsymbo1)prev = true;repeat = true;return;
}

以上就是主要部分的内容展示,要获取完整代码,可以去我的git上面直接下载哦!喜欢的话点点赞!感谢您的支持!
->高级计算机完整代码

更多推荐

JavaSwing实现高级计算器

本文发布于:2024-03-23 19:05:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1741726.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:计算器   高级   JavaSwing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!