




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、功能举例:源程序如下:import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.DecimalFormat;import javax.swing.BorderFactory;import javax.swing.ButtonGrou
2、p;import javax.swing.JButton;import javax.swing.JCheckBoxMenuItem;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JRadioButtonMenuItem;import javax.swing.JTextField;public class Calucator extends
3、 JFrame private JTextField tf;private JPanel panel1, panel2, panel3, panel4;private JMenuBar myBar;private JMenu menu1, menu2, menu3;private JMenuItem editItem1, editItem2, help1, help2, help3;private JRadioButtonMenuItem seeItem1, seeItem2;/单选框private JCheckBoxMenuItem seeItem3;/复选框private ButtonGr
4、oup bgb;private String back;private boolean IfResult = true, flag = false;private String oper = "="private double result = 0;private Num numActionListener;private DecimalFormat df;public Calucator()super("科学计算器");/设置标题栏df = new DecimalFormat("#.#");/保留四位小数this.setLayout
5、(new BorderLayout(10, 5);panel1 = new JPanel(new GridLayout(1, 3, 10, 10);panel2 = new JPanel(new GridLayout(5, 6, 5, 5);/5行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 J
6、Menu("查看(V)");menu3 = new JMenu("帮助(H)");menu1.setFont(new Font("宋体", Font.PLAIN, 12);menu2.setFont(new Font("宋体", Font.PLAIN, 12);menu3.setFont(new Font("宋体", Font.PLAIN, 12);/* * 编辑栏 */editItem1 = new JMenuItem("复制(C) Ctrl+C");editItem2 =
7、 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 JRadioButtonMenuItem("标准型(S)");seeItem3 = new JCheckB
8、oxMenuItem("数字分组(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)");he
9、lp1.setFont(new Font("宋体",Font.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()
10、;/添加一条分割线menu3.add(help2);myBar.add(menu1);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);/文
11、字右对齐tf.setText("0");tf.setBorder(BorderFactory.createLoweredBevelBorder();init();/对计算器进行初始化/* * 初始化操作 * 添加按钮 */private void init()addButton(panel1, "Backspace", new Clear(), Color.red);addButton(panel1, "CE", new Clear(), Color.red);addButton(panel1, "C", new
12、Clear(), Color.red);addButton(panel2, "1/x", new Signs(), Color.magenta);addButton(panel2, "log", new Signs(), Color.magenta);addButton(panel2, "7", numActionListener, Color.blue);addButton(panel2, "8", numActionListener, Color.blue);addButton(panel2, "9&
13、quot;, numActionListener, Color.blue);addButton(panel2, "÷", new Signs(), Color.red);addButton(panel2, "n!", new Signs(), Color.magenta);addButton(panel2, "sqrt", new Signs(), Color.magenta);addButton(panel2, "4", numActionListener, Color.blue);addButton(
14、panel2, "5", numActionListener, Color.blue);addButton(panel2, "6", numActionListener, Color.blue);addButton(panel2, "×", new Signs(), Color.red);addButton(panel2, "sin", new Signs(), Color.magenta);addButton(panel2, "x2", new Signs(), Color.mage
15、nta);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 Signs()
16、, 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 Sign
17、s(), Color.red);addButton(panel2, "tan", new Signs(), Color.magenta);addButton(panel2, "%", new Signs(), Color.magenta);addButton(panel2, "", numActionListener, Color.orange);addButton(panel2, "e", numActionListener, Color.orange);addButton(panel2, ""
18、;, new Signs(), Color.orange);addButton(panel2, "=", new Signs(), Color.red);JButton btns = new JButton("计算器");btns.setBorder(BorderFactory.createLoweredBevelBorder();btns.setEnabled(false);/按钮不可操作btns.setPreferredSize(new Dimension(20, 20);panel3.add(btns);/加入按钮addButton(panel3,
19、 "MC", null, Color.red);addButton(panel3, "MR", null, Color.red);addButton(panel3, "MS", null, Color.red);addButton(panel3, "M+", null, Color.red);panel4.add(panel1, BorderLayout.NORTH);panel4.add(panel2, BorderLayout.CENTER);this.add(tf, BorderLayout.NORTH);t
20、his.add(panel3, BorderLayout.WEST);this.add(panel4);pack();this.setResizable(false);/窗口不可改变大小this.setLocation(300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/* * 统一设置按钮的的使用方式 * param panel * param name * param action * param color */private void addButton(JPanel panel, String name, Ac
21、tionListener action, Color color)JButton bt = new JButton(name);panel.add(bt);/在面板上增加按钮bt.setForeground(color);/设置前景(字体)颜色bt.addActionListener(action);/增加监听事件/* * 计算器的基础操作(+ - × ÷) * param x */private void getResult (double x)if(oper = "+")result += x;else if(oper = "-"
22、)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 ActionListenerpublic void actionPerformed(ActionEvent e) /* * 用ActionEvent对象的getAction
23、Command()方法 * 取得与引发事件对象相关的字符串 */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.setText(String.valueOf(df.format(Math.sqrt(i);elsetf.set
24、Text("负数不能开平方根");/* log求常用对数 */else if(str.equals("log")double i = Double.parseDouble(tf.getText();if(i>0)tf.setText(String.valueOf(df.format(Math.log(i);elsetf.setText("负数不能求对数");/* %求百分比 */else if(str.equals("%")tf.setText(df.format(Double.parseDouble(tf.
25、getText() / 100);/* 1/x求倒数 */else if(str.equals("1/x")if(Double.parseDouble(tf.getText() = 0)tf.setText("除数不能为零");elsetf.setText(df.format(1 / Double.parseDouble(tf.getText();/* sin求正弦函数 */else if(str.equals("sin")double i = Double.parseDouble(tf.getText();tf.setText(St
26、ring.valueOf(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.form
27、at(Math.tan(i);/* n!求阶乘 */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<=j;k+)result *= k;tf.setText(String.valueOf(result);elsetf.setText("无法进行阶乘");/* x2求平方 */else if(str.equal
28、s("x2")double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(i*i);/* x3求立方 */else if(str.equals("x3")double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(df.format(i*i*i);/* 角度转换 */* * 将角度值转换成弧度值,方便三角函数的计算 */else if(str.equals(""
29、)double i = Double.parseDouble(tf.getText();tf.setText(String.valueOf(i/180*Math.PI);elseif(flag)IfResult = false;if(IfResult)oper = str;else getResult(Double.parseDouble(tf.getText();oper = str;IfResult = true;/* * 清除按钮的事件监听 */class Clear implements ActionListenerpublic void actionPerformed(ActionE
30、vent e) /* * 用ActionEvent对象的getActionCommand()方法 * 取得与引发事件对象相关的字符串 */String str = e.getActionCommand();if(str = "C")tf.setText("0");IfResult = true;result = 0;else if(str = "-/+")double i = 0 - Double.parseDouble(tf.getText().trim();tf.setText(df.format(i);else if(str = "Backspace")if(Double.parseDouble(tf.getText() > 0)if(tf.getText().length() > 1)tf.setText(tf.getText().substring(0, tf.get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华新工艺绿色化与技术创新研究-洞察阐释
- 2025-2030中国接送机服务行业发展分析及投资风险与战略研究报告
- 2025-2030中国微型货车行业市场现状分析及竞争格局与投资发展研究报告
- 2025-2030中国开发区物流行业发展前景及发展策略与投资风险研究报告
- 2025-2030中国应急管理行业市场深度调研及前景趋势与投资研究报告
- 少数民族服饰文化与时尚产业的对接-洞察阐释
- 技术驱动的犯罪心理机制-洞察阐释
- 2025-2030中国工业汽轮机行业市场深度调研及前景趋势与投资研究报告
- 2025-2030中国安全社区网络解决方案业务行业市场发展趋势与前景展望战略研究报告
- 信息技术的健康应用及其未来趋势研究报告分享
- 江苏省粮食集团招聘笔试题库2024
- 2024年深圳市彩田学校初中部小升初入学分班考试数学模拟试卷附答案解析
- 2024年安徽安庆市交通控股集团有限公司招聘笔试冲刺题(带答案解析)
- 《沙龙培训》课件
- 充电桩四方协议书范本
- 中考英语情景交际和看图写话
- 知道智慧网课《科学社会主义概论》章节测试答案
- 事故调查分析课件
- 《养老护理员》-课件:自然灾害的应对处理知识
- 劳务外包服务方案(技术方案)
- JJG 443-2023燃油加油机(试行)
评论
0/150
提交评论