版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 8/8Java科学计算器程序代码 计算器布局显示: 功能举例: 13+20=33 -7*14=-98:先输入7,再单击-/+将其变成负数,然后依次单击号、14与 7!=5040 sin30=0.5:先输入30,然后按下按钮转换成角度值,再按下sin即可显示结果 sqrt(4)=2:利用鼠标点击4后再点击sqrt按键即可显示结果 2*=6.2832 源程序如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt
2、.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.DecimalFormat; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMen
3、u; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.JTextField; public class Calucator extends JFrame private JTextField tf; private JPanel panel1, panel2, panel3, panel4; private JMenuBar myBar; private
4、 JMenu menu1, menu2, menu3; private JMenuItem editItem1, editItem2, help1, help2, help3; private JRadioButtonMenuItem seeItem1, seeItem2;/单选框 private JCheckBoxMenuItem seeItem3;/复选框 private ButtonGroup bgb; private String back; private boolean IfResult = true, flag = false; private String oper = =;
5、private double result = 0; private Num numActionListener; private DecimalFormat df; public Calucator() super(科学计算器);/设置标题栏 df = new DecimalFormat(#.#);/保留四位小数 this.setLayout(new BorderLayout(10, 5); panel1 = new JPanel(new GridLayout(1, 3, 10, 10); panel2 = new JPanel(new GridLayout(5, 6, 5, 5);/5行6
6、列 panel3 = new JPanel(new GridLayout(5, 1, 5, 5); panel4 = new JPanel(new BorderLayout(5, 5); /* *菜单栏 */ myBar = new JMenuBar(); menu1 = new JMenu(编辑(E); menu2 = new JMenu(查看(V); menu3 = new JMenu(帮助(H); menu1.setFont(new Font(宋体, Font.PLAIN, 12); menu2.setFont(new Font(宋体, Font.PLAIN, 12); menu3.se
7、tFont(new Font(宋体, Font.PLAIN, 12); /* *编辑栏 */ editItem1 = new JMenuItem(复制(C) Ctrl+C); editItem2 = new JMenuItem(粘贴(P) Ctrl+V); editItem1.setFont(new Font(宋体,Font.PLAIN,12); editItem2.setFont(new Font(宋体,Font.PLAIN,12); /* *查看栏 */ seeItem1 = new JRadioButtonMenuItem(科学型(T); seeItem2 = new JRadioBut
8、tonMenuItem(标准型(S); seeItem3 = new JCheckBoxMenuItem(数字分组(I); seeItem1.setFont(new Font(宋体,Font.PLAIN,12); seeItem2.setFont(new Font(宋体,Font.PLAIN,12); seeItem3.setFont(new Font(宋体,Font.PLAIN,12); /* *帮助栏 */ help1 = new JMenuItem(帮助主题(H); help2 = new JMenuItem(关于计算器(A); help1.setFont(new Font(宋体,Fon
9、t.PLAIN,12); help2.setFont(new Font(宋体,Font.PLAIN,12); bgb = new ButtonGroup();/选项组 menu1.add(editItem1); menu1.add(editItem2); menu2.add(seeItem1); menu2.add(seeItem2); menu2.addSeparator();/添加一条分割线 menu2.add(seeItem3); menu3.add(help1); menu3.addSeparator();/添加一条分割线 menu3.add(help2); myBar.add(men
10、u1); myBar.add(menu2); myBar.add(menu3); this.setJMenuBar(myBar); numActionListener = new Num();/实现数字监听 /* *文本域,即为计算器的屏幕显示区域 */ tf = new JTextField(); tf.setEditable(false);/文本区域不可编辑 tf.setBackground(Color.white);/文本区域的背景色 tf.setHorizontalAlignment(JTextField.RIGHT);/文字右对齐tf.setText(0); tf.setBorder
11、(BorderFactory.createLoweredBevelBorder(); init();/对计算器进行初始化 /* *初始化操作 *添加按钮 */ private void init() addButton(panel1, Backspace, new Clear(), Color.red); addButton(panel1, CE, new Clear(), Color.red); addButton(panel1, C, new Clear(), Color.red); addButton(panel2, 1/x, new Signs(), Color.magenta); a
12、ddButton(panel2, log, new Signs(), Color.magenta); addButton(panel2, 7, numActionListener, Color.blue); addButton(panel2, 8, numActionListener, Color.blue); addButton(panel2, 9, numActionListener, Color.blue); addButton(panel2, , new Signs(), Color.red); addButton(panel2, n!, new Signs(), Color.mage
13、nta); addButton(panel2, sqrt, new Signs(), Color.magenta); addButton(panel2, 4, numActionListener, Color.blue); addButton(panel2, 5, numActionListener, Color.blue); addButton(panel2, 6, numActionListener, Color.blue); addButton(panel2, , new Signs(), Color.red); addButton(panel2, sin, new Signs(), C
14、olor.magenta); addButton(panel2, x2, new Signs(), Color.magenta); addButton(panel2, 1, numActionListener, Color.blue); addButton(panel2, 2, numActionListener, Color.blue); addButton(panel2, 3, numActionListener, Color.blue); addButton(panel2, -, new Signs(), Color.red); addButton(panel2, cos, new Si
15、gns(), Color.magenta); addButton(panel2, x3, new Signs(), Color.magenta); addButton(panel2, 0, numActionListener, Color.blue); addButton(panel2, -/+, new Clear(), Color.blue); addButton(panel2, ., new Dot(), Color.blue); addButton(panel2, +, new Signs(), Color.red); addButton(panel2, tan, new Signs(
16、), Color.magenta); addButton(panel2, %, new Signs(), Color.magenta); addButton(panel2, , numActionListener, Color.orange); addButton(panel2, e, numActionListener, Color.orange); addButton(panel2, , new Signs(), Color.orange); addButton(panel2, =, new Signs(), Color.red); JButton btns = new JButton(计
17、算器); btns.setBorder(BorderFactory.createLoweredBevelBorder(); btns.setEnabled(false);/按钮不可操作 btns.setPreferredSize(new Dimension(20, 20); panel3.add(btns);/加入按钮 addButton(panel3, MC, null, Color.red); addButton(panel3, MR, null, Color.red); addButton(panel3, MS, null, Color.red); addButton(panel3, M
18、+, null, Color.red); panel4.add(panel1, BorderLayout.NORTH); panel4.add(panel2, BorderLayout.CENTER); this.add(tf, BorderLayout.NORTH); this.add(panel3, BorderLayout.WEST); this.add(panel4); pack(); this.setResizable(false);/窗口不可改变大小 this.setLocation(300, 200); this.setDefaultCloseOperation(JFrame.E
19、XIT_ON_CLOSE); /* *统一设置按钮的的使用方式 *param panel *param name *param action *param color */ private void addButton(JPanel panel, String name, ActionListener action, Color color) JButton bt = new JButton(name); panel.add(bt);/在面板上增加按钮 bt.setForeground(color);/设置前景(字体)颜色 bt.addActionListener(action);/增加监听事
20、件 /* *计算器的基础操作(+-) *param x */ private void getResult (double x) if(oper = +)result += x; else if(oper = -)result -= x; else if(oper = )result *= x; else if(oper = )result /= x; else if(oper = =)result = x; tf.setText(df.format(result); /* *运算符号的事件监听 */ class Signs implements ActionListener public v
21、oid actionPerformed(ActionEvent e) /* * 用ActionEvent对象的getActionCommand()方法 * 取得与引发事件对象相关的字符串 */ String str = e.getActionCommand(); /* sqrt求平方根 */ if(str.equals(sqrt) double i = Double.parseDouble(tf.getText(); if(i=0) /* * String.valueOf() 转换为字符串 * df.format() 按要求保留四位小数 * Math.sqrt() 求算数平方根 */ tf.s
22、etText(String.valueOf(df.format(Math.sqrt(i); else tf.setText(负数不能开平方根); /* log求常用对数 */ else if(str.equals(log) double i = Double.parseDouble(tf.getText(); if(i0) tf.setText(String.valueOf(df.format(Math.log(i); else tf.setText(负数不能求对数); /* %求百分比 */ else if(str.equals(%) tf.setText(df.format(Double.
23、parseDouble(tf.getText() / 100); /* 1/x求倒数 */ else if(str.equals(1/x) if(Double.parseDouble(tf.getText() = 0) tf.setText(除数不能为零); else tf.setText(df.format(1 / Double.parseDouble(tf.getText(); /* sin求正弦函数 */ else if(str.equals(sin) double i = Double.parseDouble(tf.getText(); tf.setText(String.valueO
24、f(df.format(Math.sin(i); /* cos求余弦函数 */ else if(str.equals(cos) double i = Double.parseDouble(tf.getText(); tf.setText(String.valueOf(df.format(Math.cos(i); /* tan求正切函数 */ else if(str.equals(tan) double i = Double.parseDouble(tf.getText(); tf.setText(String.valueOf(df.format(Math.tan(i); /* n!求阶乘 */
25、 else if(str.equals(n!) double i = Double.parseDouble(tf.getText(); if(i%2=0)|(i%2=1)/判断为整数放进行阶乘操作 int j = (int)i;/强制类型转换 int result=1; for(int k=1;k 0) if(tf.getText().length() 1) tf.setText(tf.getText().substring(0, tf.getText().length() - 1); /使用退格删除最后一位字符 else tf.setText(0); IfResult = true; else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024届高考语文复习:满分作文赏析+课件
- 丝丽532动能素产品介绍
- 秋季呼吸道传染病防治知识:海运篇
- 房地产拓客十二式:拓展高端客户
- 妊娠期高血压疾病孕期锻炼试卷
- 经济作物种植承包合同
- 2023-2024学年浙江省杭州市七年级下册数学期末模拟卷
- 冷疗法在骨科慢性疼痛管理中的效果
- 医院感染控制经验分享培训
- 塑料加工废水处理培训资料
- 初中数学 新北师大七年级数学第三次月考
- 部编版初中语文七至九年级语文教材各册人文主题与语文要素汇总一览表合集单元目标能力点
- 中国当代文学智慧树知到答案章节测试2023年青岛滨海学院
- 有限空间作业人员安全教育记录
- zl26滤棒成型机组备件清单配置号
- GB/T 22372-2008单色黑白激光打印机测试版
- GB/T 20727-2006封闭管道中流体流量的测量热式质量流量计
- GB/T 13923-2022基础地理信息要素分类与代码
- 《企业数字化转型分析案例【5600字论文】》
- 食品公司屠宰肉鸡项目污水处理方案设计
- 教科版四年级科学上册第三单元《7 设计制作小车(一)》课堂教学课件PPT小学公开课
评论
0/150
提交评论