任务一:简易计算器的设计

实训内容:模仿Windows自带的标准版计算器,设计并用Java语言实现简易的计算器(根据自己的能力,可以适当地增加或删除部分功能)。

最低要求:计算器运行界面如下图所示,包含二个文本框(分别显示算式和运算结果)、10个数字按钮(0~9)、4个运算按钮、一个等号按钮、一个清除按钮,要求将按键和结果显示在文本框中。

package Mycalculator;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class Calculator implements ActionListener {private JFrame frame;//组合原理private ImageIcon icon;private JTextField textField1;private JTextField textField2;private JButton[] button;private JPanel panel1;private JPanel panel2;private JLabel label;//第一个数private String x = "";//第二个数private String y = "";//运算符private String fh = "";//输出结果private double answer;//初始化
public  void  init(){MyFrame();MyIcon();MyTestField();MyButton();MyLabel();display();
}private void display() {frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);frame.setVisible(true);}private void MyFrame() {//设置frame的标题,坐标,大小。frame =new JFrame("splendid‘s Calculator");frame.setBounds(700,150,450,540);frame.setResizable(false);//绝对布局frame.setLayout(null);}private void MyTestField() {//设置文本框1 的大小位置,字体,颜色textField1 =new JTextField();textField1.setHorizontalAlignment(JTextField.LEFT);textField1.setFont(new Font("黑体",Font.BOLD,35));textField1.setBackground(new Color(195, 195, 232));//设置文本框2 的大小位置,字体,颜色textField2 =new JTextField();textField2.setHorizontalAlignment(JTextField.RIGHT);textField2.setFont(new Font("黑体",Font.BOLD,35));textField2.setBackground(new Color(189, 189, 232));//将文本框添加到面板上panel1 = new JPanel();panel1.add(textField1);panel1.add(textField2);panel1.setLayout(new GridLayout(2,1));panel1.setBounds(20,15,400,60);//将文本框放在容器上面frame.add(panel1,BorderLayout.NORTH);}private void MyIcon() {}private void MyButton() {// 按钮文本String[] arr ={"7","8","9","*","4","5","6","/","1","2","3","-","0","CE","+","=", };// 按钮button = new JButton[arr.length];panel2 =new JPanel();//设置面板的布局方式panel2.setBounds(20,90,400,350);//表格布局panel2.setLayout(new GridLayout(4,4,8,8));for(int i =0;i<button.length;i++){//创建按钮button[i] =new JButton(arr[i]);//设置按钮字体button[i].setFont(new Font("黑体",Font.CENTER_BASELINE,20));//设置按钮背景颜色button[i].setBackground(new Color(242,240,235));//添加监听事件button[i].addActionListener( this);panel2.add(button[i]);}frame.add(panel2,BorderLayout.SOUTH);
}//计算器功能实现public void calculate(String z) {if (z.equals("+")) answer = Double.parseDouble(x) + Double.parseDouble(y);else if (z.equals("-")) answer = Double.parseDouble(x) - Double.parseDouble(y);else if (z.equals("*")) answer = Double.parseDouble(x) * Double.parseDouble(y);else if (z.equals("/")) answer = Double.parseDouble(x) / Double.parseDouble(y);else answer = Double.parseDouble(x);//将答案显示x = Double.toString(answer);if(x.length()>6) textField2.setText(x.substring(0,10));else textField2.setText(x);y = "";answer = 0;fh = "";}@Overridepublic void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals("0")|| e.getActionCommand().equals("1")|| e.getActionCommand().equals("2")|| e.getActionCommand().equals("3")|| e.getActionCommand().equals("4")|| e.getActionCommand().equals("5")|| e.getActionCommand().equals("6")|| e.getActionCommand().equals("7")|| e.getActionCommand().equals("8")|| e.getActionCommand().equals("9")) {if (fh.equals("")) {x = x + e.getActionCommand();if (x.startsWith("00")) x.substring(1);textField1.setText(x);} else {y = y + e.getActionCommand();if (y.startsWith("00")) y.substring(1);textField1.setText(x+fh+y);}}//清空if (e.getActionCommand().equals("CE")) {x = "";y = "";fh = "";textField1.setText("");textField2.setText("");}if (e.getActionCommand().equals("+")) {if (!fh.equals("")) calculate(fh);fh = "+";textField1.setText(x+fh);}if (e.getActionCommand().equals("-")) {if (!fh.equals("")) calculate(fh);fh = "-";textField1.setText(x+fh);}if (e.getActionCommand().equals("*")) {if (!fh.equals("")) calculate(fh);fh = "*";textField1.setText(x+fh);}if (e.getActionCommand().equals("/")) {if (!fh.equals("")) calculate(fh);fh = "/";textField1.setText(x+fh);}if (e.getActionCommand().equals("=")) {calculate(fh);}}private void MyLabel() {label = new JLabel();label.setText("版权所有:splendid");//设置标签的字体,大小及颜色label.setFont(new Font("黑体",Font.CENTER_BASELINE,25));label.setForeground(Color.RED);label.setBounds(4, 470, 300, 40);frame.add(label);}public static void main(String[] args) {Calculator cal =new Calculator();cal.init();}}

Java暑期实训——简易计算器相关推荐

  1. Java暑期实训任务二——单词检测程序

    实训内容:模仿"百词斩"手机App,设计并用Java语言实现一个"百词斩"图形界面程序(根据自己的能力,可以适当地增加或删除部分功能). 最低要求: (1)事先 ...

  2. java质数和合数的程序_《java项目实训》课程设计计算器.doc

    <java项目实训>课程设计计算器.doc 课程设计报告课程名称JAVA项目实训课程设计设计名称基于JAVA计算器的设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓 ...

  3. java迷宫实训报告_Java综合实训报告-迷宫.doc

    Java综合实训报告-迷宫 目 录 1.需求分析2 2.概要设计2 2.1功能图3 2.2系统流程图4 3.详细设计4 3.1类关系图5 3.2类设计图5 类Maze5 类MazeGrid6 3.3主 ...

  4. 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA项目实训管理系统设计与实现mybatis+源码+调试部署+系统+数据库+lw ...

  5. 暑期实训总结_李小倩

    暑期实训总结 姓名:李小倩  学号:111307105 班级:CSDN-java班 年级:2011级 转眼间实训已经结束有些时间了,我想这个实训对于我们参与的每一个人来说都是一段美好快乐的记忆.记得距 ...

  6. 暑期实训心得及总结_史国旭

    暑期实训心得及总结                     姓名:史国旭  学号:111307168 班级:CSDN-java 年级:2011级 转眼间实训已经结束4天了,我想这个实训对于我们参与的每 ...

  7. 编程计算机公司加乘,实训一计算器编程的实现

    <实训一计算器编程的实现>由会员分享,可在线阅读,更多相关<实训一计算器编程的实现(11页珍藏版)>请在人人文库网上搜索. 1.信息工程学院信息工程学院 综合实训报告综合实训报 ...

  8. 计算机暑期实训报告,计算机专业暑期实训报告总结范文

    <计算机专业暑期实训报告总结范文>由会员分享,可在线阅读,更多相关<计算机专业暑期实训报告总结范文(4页珍藏版)>请在人人文库网上搜索. 1.计算机专业暑期实训报告总结范文 计 ...

  9. 华北科技学院java考试题_华北科技学院java课程设计报告简易计算器

    华北科技学院java课程设计报告简易计算器 华北科技学院计算机系综合性实验 实 验 报 告 课程名称 Java程序设计B 实验学期 2011 至 2012 学年 第 1 学期 学生所在系部 计算机学院 ...

  10. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

最新文章

  1. Firebird数据库系统的开发团队
  2. dirty_background_ration 与 /proc/sys/vm/dirty_ratio
  3. 《PHP综合开发环境》(NuSphere PhpED v5.6.5615 Win32)[压缩包]
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第4篇] P类复杂问题
  5. linux中类似findfirst的函数,findfirst函数的用法
  6. PAT1004. 成绩排名
  7. 【待续】C数据结构2.3-顺序表之插入算法
  8. Spring AOP(五)之Around增强处理
  9. 2018年终总结以及未来展望
  10. java垃圾回收器有哪些_Java常见的垃圾收集器有哪些?
  11. iOS 混合开发 —— 方案分析
  12. BackgroundWorker 简单使用教程 多个线程的创建
  13. myeclipse安装maven
  14. liunx Swap 分区的作用
  15. Windows 7下手动搭建Asp和PHP集成环境
  16. 绿联蓝牙发射器 linux,绿联蓝牙发射器 Switch蓝牙耳机完美解决方案
  17. 政策 | 辅导班的“超纲教学”凉了?教育部印发六科负面清单!
  18. 关于thread中mutex相关内容的理解
  19. Android 图形架构 之三—— 创建Layer、Surface、SurfaceControl
  20. cocos shader 之 黑白滤镜

热门文章

  1. 读《大数据思维与决策》的读后感
  2. Python GUI案例之看图猜成语开发(第一篇)
  3. vue3使用echarts
  4. 苹果Mac设备丢失时怎样利用激活锁保护隐私信息?
  5. CE教程第九关——处理共用代码
  6. 唐宇迪数据分析学习笔记
  7. web前端进阶架构师之路
  8. efi分区咋移动到c盘里_曲线解决——用原版镜像中的diskpart命令创建efi分区,分区类型为主分区的原因...
  9. 网易云音乐android变臃肿,网易云音乐版权少,为什么用户还能突破8亿??
  10. 联想万全服务器系列,联想服务器万全系列慧眼高级版操作快速入门