计算器"/>
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实现高级计算器
发布评论