版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JavaJava 实训实训项目报告项目报告 第第 七七 组组题题 目目: 计计算器算器 院院 系系: 软软件学院件学院 专业专业班班级级: 12 级软级软件工程件工程 2 班班 项项目目经经理理: 王王 丹丹 丹丹 组组 员员: : 吴吴东东昊,宋雨,昊,宋雨,陈陈存新,刘磊存新,刘磊华华 指指导导教教师师: 黄黄 淼淼 2014 年年 3 月月 18 日日目录(采用系统自动生成目录)1 1 项目简介项目简介.31.1 项目意义.31.2 项目说明.31.3 关键技术.42 2 总体设计总体设计.52.1(WIN.JAVA)CALCULATORWINDOW.JAVA(主类).62.2 功能类
2、.73 详细设计与实现详细设计与实现.93.1 设计使用软件介绍 .93.2 设计效果图 .113.3 UML 图.113.4 程序流程图 .153.5 代码的实现(WIN.JAVA).164 4 项目使用说明项目使用说明.174.1 代码调试.174.2 编译的运行 .174.3 软件发布 .185 5 结论结论.196 6 附录附录.211 项目简介1.1 项目意义在日常生活中人们总是难以避免的要进行一些运算,当运算比较复杂时没有计算器就会显得很麻烦。为了解决日常生活中的困难,特意设计了这个计算器系统。在该系统中不仅可以进行整数的加、减、乘、除等简单运算,也可以进行浮点数的加、减、乘、除等
3、运算。除此之外还可以进行三角函数、指数、对数、平方等运算。人们应用它可以解决日常生活中的一些运算问题,比如做买卖时进行交易的过程中就可以利用该计算器进行数量、价格以及金额的统计计算。学生也可以利用该计算器进行数学运算,解决简单的三角函数运算。该计算器围绕 Java 编程语言在编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用 Java 编程实现的全过程。在编程使用 Java 语言,是目前比较流行的编程语言。在当今这个网络的时代,java 语言在网络编程方面的优势使得网络编程有了更好的选择。Java 语言最大的特点是具有跨平台性,使其不受平台不同的
4、影响,得到了广泛的应用。1.2 项目说明Windows2000/XP 系统中的“计算器”是一个方便实用的计算工具,但没有提供显示计算过程和保存过程的功能。而我们所实现的计算器所遵循的计算规则与 Windows2000、XP 系统中的“计算器”相同,除了具有普通的计算功能外,还具有显示计算过程、保存计算过程之功能。(1)单击“计算器”上的数字按钮(0,1,2,3,4,5,6,7,8,9)可以设置参与计算的运算数。(2)单击“计算器”上的运算符按钮(+,-,*,/)可以选择运算符号。(3)单击“计算器”上的函数按钮可以计算出相应的函数值。(4)单击“计算器”上的“=”按钮显示计算结果。(5)在一个
5、文本框中显示当前的计算过程,在一个文本区中显示以往的计算过程。(6)单击“保存”按钮可以将文本区中的全部计算过程保存到文件;单击“复制”按钮可以将文本区中选中的文本复制到剪贴板;单击“清除”按钮可以清除文本区中的全部内容。1.3 关键技术在设计过程中,最重要的就是代码的套用、图形界面的设计、按钮与面板的布局、以及代码的输写。计算器能不能做出来,做的完不完美就集中在这几个方面了。在这次设计中,遇到的重点有以下两点:(1)Java 计算器在支行时会出现 IOException 异常。处理方法是在遇到异常时用 try,catch 方法对异常进行捕获。(2)java 计算器中还用到了继承继承是面向对象
6、方法中一个十分重要的的概念,并且是提高软件开发效率的重要原因之一。继承实际上是存在于面向对象程序中的两个类之间的一种关系。继承的实现主要有以下几个步骤。(1)确定父类。根据将创建的子类需要选择一个相应的类作为继承父类。新定义的子类可以从父类那里自动继承所有非私有的属性和方法作为自己的成员。选择一个恰当的父类可以达到事半功倍的效果。(2)定义子类。Java 中的继承是通过 extends 关键字来实现的,在定义类时使用 extends 关键字指明新定义类的父类,就在两个类之间建立了继承关系。(3)实现子类的功能。子类具体要实现的功能由类体中相应的域和方法来实现,其编写和一般的类是完全相同的。通过
7、继承,子类拥有父类的所有非私有成员。使用继承具有以下的好处:降低了代码编写中的冗余度,更好地实现了代码复用的功能,从而提高了程序编写的效率;由于降低了代码的冗余度,使得程序在维护时就变得非常的方便。2 总体设计在设计计算器时,可以编写 17 个 java 源文件:CalculatorWindow.java,NumberButton.java,Operation.java,HandleDigit.java,HandleOperation.java,HandleDot.java,HandlePositiveOrNegative.java,HandleEquality.java,HandleSin.
8、java,HandleBack.java 和HandleClear.java 等。计算器除了上述 17 个 java 源文件所给出的类外,还需要 Java 系统提供的一些重要的类,如 JButton,JTextField,JTextArea,LinkedList 等。计算器所用到的一些重要的类以及之间的组合关系如图 2.1 所示。图 2.1 类之间的组合关系2.1(Win.java)CalculatorWindow.java(主类)Win 类负责创建计算器的主窗口,该类含有 main 方法,计算器从该类开始执行。Win 类有 20 种类型的对象:JButton,JTextField,JText
9、Area,LinkedList,CalculatorWindow.java,NumberButton.java,Operation.java,HandleDigit.java,HandleOperation.java,HandleDot.java,HandlePositiveOrNegative.java,HandleEquality.java,HandleSin.java,HandleBack.java 和 HandleClear.java 等对象。Win 类创建的窗口以及其中的主要成员如图 2.2 所示。JTextAreaJTextFieldOperationButtonNumberBut
10、ton图 2.2 Win 窗口及主要成员2.2 功能类* *1)NumberButton 类 该类创建的对象是主类 CalculatorWindow 窗口中的一个“数字”按钮。NumberButton 类有一个 int 类型的成员 number,标明所创建的按钮所含有的数字。该类所创建的 10 个按钮被添加到 CalculatorWindow 窗口中。 2)OperationButton 类 该类创建的对象是主类 CalculatorWindow 窗口中的一个“运算符”按钮。OperationButton 类有一个 String 类的成员 operateSign,用于标明所创建的按钮所含有的运
11、算符号。该类所创建的 4 个按钮被添加到 CalculatorWindow 窗口中。 3)HandleDigit 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击“数字”按钮时,该类所创建的对象负责处理和数字有关的计算过程。 4)HandleOperation 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击“运算符”按钮时,该类所创建的对象负责处理和运算符有关的计算过程。 5)HandleDot 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击“.”按钮时,该类所创建的对象负责处理小数点。 6)HandlePOrN 类 该类创建的对
12、象负责处理 ActionEvent 事件。当用户单击“+/-”按钮时,该类所创建的对象负责处理数字的正负转换。 7)HandleEquality 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击“=”按钮时,该类所创建的对象计算有关数据。 8)HandleSin 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击 Sin 按钮时,该类所创建的对象负责计算正弦三角函数的值。9)HandleCos 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击 Cos 按钮时,该类所创建的对象负责计算余弦三角函数的值。10)HandleTan 类 该类创
13、建的对象负责处理 ActionEvent 事件。当用户单击 Tan 按钮时,该类所创建的对象负责计算正切三角函数的值。11)HandleLog 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击 Log 按钮时,该类所创建的对象负责计算对数的值。12)HandleSqrt 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击 Sqrt 按钮时,该类所创建的对象负责计算开方的值。13)HandleBack 类 该类创建的对象负责处理 ActionEvent 事件。当用户单击“退格”按钮时,该类所创建的对象负责进行退格操作。 14)HandleClear 类 该类
14、创建的对象负责处理 ActionEvent 事件。当用户成功单击 C 按钮时,该类所创建的对象负责清除有关的计算结果。3 详细设计与实现详细设计与实现3.1 设计使用软件介绍本次设计使用的软件是 Myeclipse 8.0。 Eclipse 最初是由 IBM 公司开发的替代商业软件 Visual Age for Java 的下一代 IDE 开发环境,2001 年 11 月贡献给开源社区,现在它由非营利软件供应商联盟 Eclipse 基金会(Eclipse Foundation)管理。 2003 年,Eclipse 3.0选择 OSGi 服务平台规范为运行时架构。 2007 年 6 月,稳定版
15、3.3 发布。2008年 6 月发布代号为 Ganymede 的 3.4 版。2009 年 7 月发布代号为 GALILEO 的 3.5版。 Eclipse 是著名的跨平台的自由集成开发环境(IDE) 。最初主要用来Java 语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如 C+和Python 的开发工具。Eclipse 的本身只是一个框架平台,但是众多插件的支持使得 Eclipse 拥有其他功能相对固定的 IDE 软件很难具有的灵活性。许多软件开发商以 Eclipse 为框架开发自己的 IDE。 Eclipse 最初由 OTI 和 IBM 两家公司的 IDE 产品开发组创建,起始于
16、1999 年 4 月。IBM 提供了最初的 Eclipse 代码基础,包括 Platform、JDT 和PDE。目前由 IBM 牵头,围绕着 Eclipse 项目已经发展成为了一个庞大的Eclipse 联盟,有 150 多家软件公司参与到 Eclipse 项目中,其中包括Borland、Rational Software、Red Hat 及 Sybase 等。Eclipse 是一个开发源码项目,它其实是 Visual Age for Java 的替代品,其界面跟先前的 Visual Age for Java 差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越
17、来越受人们关注。近期还有包括 Oracle 在内的许多大公司也纷纷加入了该项目,并宣称 Eclipse 将来能成为可进行任何语言开发的 IDE 集大成者,使用者只需下载各种语言的插件即可。 虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE) ,这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供
18、插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。 基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere Studio Workbench,它构成了 IBM Java 开发工具系列的基础。例如,WebSphere Studio Application Developer 添加了对 JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。 Eclipse 的主要组成: Eclipse 是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由 Eclipse 项目、Ec
19、lipse 工具项目和 Eclipse 技术项目三个项目组成,具体包括四个部分组成Eclipse Platform、JDT、CDT 和 PDE.JDT 支持 Java 开发、CDT 支持 C 开发、PDE 用来支持插件开发,Eclipse Platform 则是一个开放的可扩展 IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform 允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。 Eclipse SDK(软件开发者包)是 Eclipse Platform、JDT 和 PD
20、E 所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到 Eclipse Platform 中的工具。Eclipse SDK 由 Eclipse 项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse 项目生产的软件以 CPL 发布,第三方组件有各自自身的许可协议。3.2 设计效果图Win 创建的窗口如图 3.1 所示图 3.1 系统主界面效果图3.3 UML 图Win 类是 javax.swing 包中 JFrame 的一个子类,并实现了 ActionListener接口。表明该类的主要成员变量方法的 UML
21、图如图 3.2 所示。图 3.2 Win 类的 UML 图以下是 UML 途中有关数据和方法的详细说明。1)成员变量numberButton 是 NumberButton 型数组,每个单元是一个 NumberButton 类创建的“数字按钮”对象,该数组的长度为 10.numberButton 数组中的“数字按钮”含有的数字依次为 0,1,2,3,4,5,6,7,8,9.每个“数字按钮”都注册有ActionEvent 事件监控器。operationButton 是 OperationButton 型数组,每个单元是一个 OperationButton类创建的运算符按钮对象,该数组的长度为 4.
22、operationButton 数组中的运算符按钮中含有字符串为“+” , “-” , “*” , “/” , “Sqrt” , “sin” , “cos” , “tan” ,“log” 。每个运算符按钮都注册有 ActionEvent 事件监控器。小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,cos,tan,log,sqrt,savaButton,copyButton 和 clearButton 等是Jbutton 创建的按钮对象,其上的名字依次为:“.” , “+/-” , “退格” , “=” ,“C” , “sin” , “cos” , “tan” , “log” ,
23、“sqrt” , “保存” , “复制”和“清除” 。这些按钮都注册了 ActionEvent 事件监控器。resultShow,showComputerProcess 是 javax.swing 包中 JTextField 创建的文本框,分别用来显示当前的计算结果和计算过程。其中 resultShow 的文本对齐方式是“右对齐” ,showComputerProcess 的文本对齐方式是“居中对齐” 。savaComputerProcess 是 javax.swing 包中 JTextArea 创建的文本区,用来显示以往的计算结果和计算过程。list 是 java.util 包中 Linke
24、dlist创建的链表对象,盖帘表中的节点依次用来存放第一个运算数,运算符号和第二个运算数的字符串表示。handleDigit 是 HandleDigit 类创建的对象,该对象是数字按钮的监视器,当用户单击数字按钮时,handleDigit 对象将调用 HandleDigit 类实现的ActionListener 接口中 actionPerformed(ActionEvent)方法。handleOperation 是 HandleOperationt 类创建的对象,该对象是数字按钮的监视器,当用户单击数字按钮时,handleOperationt 对象将调用HandleOperationt 类实现
25、的 ActionListener 接口中actionPerformed(ActionEvent)方法。handleBack 是 HandleBack 类创建的对象,该对象是“退格”按钮的监视器,当用户单击“退格”按钮时,handleBack 对象将调用 HandleBack 类实现的ActionListener 接口中 actionPerformed(ActionEvent)方法。handleClear 是 HandleClear 类创建的对象,该对象是“清除”按钮的监视器,当用户单击“清除”按钮时,handleClear 对象将调用 HandleClear 类实现的ActionListene
26、r 接口中 actionPerformed(ActionEvent)方法。handleEquality 是 HandleEquality 类创建的对象,该对象是“等号”按钮的监视器,当用户单击“等号”按钮时,handleEquality 对象将调用HandleEquality 类实现的 ActionListener 接口中actionPerformed(ActionEvent)方法。handleDot 是 HandleDot 类创建的对象,该对象是“小数点”按钮的监视器,当用户单击“小数点”按钮时,handleDot 对象将调用 HandleDot 类实现的ActionListener 接口中
27、 actionPerformed(ActionEvent)方法。handleDigit 是 HandleDigit 类创建的对象,该对象是数字按钮的监视器,当用户单击数字按钮时,handleDigit 对象将调用 HandleDigit 类实现的ActionListener 接口中 actionPerformed(ActionEvent)方法。handlePOrN 是 HandlePOrN 类创建的对象,该对象是“正负”按钮的监视器,当用户单击“正负”按钮时,handlePOrN 对象将调用 HandlePOrN 类实现的ActionListener 接口中 actionPerformed(A
28、ctionEvent)方法。handleSin 是 HandleSin 类创建的对象,该对象是“sin”按钮的监视器,当用户单击数字按钮时,handleSin 对象将调用 HandleSin 类实现的ActionListener 接口中 actionPerformed(ActionEvent)方法。handleCos 是 HandleCos 类创建的对象,该对象是“Cos”按钮的监视器,当用户单击数字按钮时,handleCos 对象将调用 HandleCos 类实现的ActionListener 接口中 actionPerformed(ActionEvent)方法。handleTan 是 Ha
29、ndleSin 类创建的对象,该对象是“Tan”按钮的监视器,当用户单击数字按钮时,handleTan 对象将调用 HandleTan 类实现的ActionListener 接口中方法。handleLog 是 HandleSin 类创建的对象,该对象是“Log”按钮的监视器,当用户单击数字按钮时,handleLog 对象将调用 HandleLog 类实现的ActionListener 接口中 actionPerformed(ActionEvent)方法。2)方法Win 创建的窗口是 saveButton,copyButton 和 clearButton 三个按钮的ActionEvent 事件监
30、控器,当用户单击这些按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。如果用户单击“savaButton”按钮,actionPerformed(ActionEvent)方法所执行的操作是弹出保存文件的对话框,将 savaComputerProcess 文本区显示的以往计算过程保存到文件;如果用户单击按钮,actionPerformed(ActionEvent)所执行的的操作是将 copyComputerProcess 文本区中选中的文本复制到剪切板;如果用户单击 clearButton 按钮,actionPerformed(ActionEvent)方
31、法所执行的操作是清除 savaComputerProcess 文本区中的全部文本。Win()是构造方法,负责完成窗口的初始化。main(String)方法是计算其程序运行的入口方法。3.4 程序流程图根据系统功能的执行过程可以得到如图 3.3 所示的流程图: YesYes YesYes NONO YesYes NONO 加加 减减 乘乘 sinsin NONO yes图 2 程序流程图3.5 代码的实现(Win.java)见附录 win.java 代码d=a-bd=a*b 开始数字按钮?钮?键盘输入按?钮?哪种运算?存储数据读取文本域数据并存储d=a+bd=sin(a)输出结果结束?结束4 项
32、目使用说明4.1 代码调试把前面 17 个源文件:CalculatorWindow.java,NumberButton.java,Operation.java,HandleDigit.java,HandleOperation.java,HandleDot.java,HandlePositiveOrNegative.java,HandleEquality.java,HandleSin.java,HandleBack.java 和HandleClear.java 保存到同一目录中(如 D:ch2) 。分别编译这 17 个 Java 源文件,或运行“javac*.java”命令,便已全部用的源文件,
33、然后运行主类,即运行 Win 类。4.2 编译的运行软件计算功能的演示如图 4.1图 4.1 软件功能的演示软件保存功能的演示如图 4.2图 4.2 软件保存功能的演示4.3 软件发布可以使用 jar.exe 命令制作 JAR 文件来发布编写的软件。1)首先用文本编辑器,如 Windows 下的“记事本” ,编写一个清单文件: mymoon.mf Manifest-Version:1.0 Main-Class:CalculatorWindow Created-By:1.2(SunMicrosystemsInc.)将 mymoon.mf 保存到 D:ch2 中,即和应用程序所用的字节码文件保存在
34、相同的目录中。注意:清单文件中的“Manifest-Version:”和 1.0 之间, “Main-Class:”和主类 Win 之间以及“Created-By:”和 1.2 之间必须有且只有一个空格。2)生成 JAR 文件D:ch2jar cfm Win.jar mymoon.mf*.class其中,参数 c 表示要生成一个新的 JAR 文件,f 表示要生成的 JAR 文件的名字,m 表示清单的名字。 现在就可以将 Win.jar 复制到5 结论设计,给人以创作的冲动,但也要为这次冲动承担一定的痛苦,但事后发现,这一切都是值得的,本次的 JAVA 课程设计让我对 JAVA 的理论知识又有了
35、更深一步的了解,温故而知新,开始设计之时完全没头绪,对与理论学习不够扎实的我深感“书到用时方恨少”只好再把书上介绍的相关知识重新阅读一遍,对知识进行了全面而系统的梳理,遇到难处首先是苦思冥想寻求方法,再向同学请教,终于熟练掌握了基本理论知识,而且领悟了诸多平时学习难以理解掌握的的较难的知识,学会了如何思考的方式,找到了设计的灵感。这次课程设计使我感到收获不小,使我对 JAVA 的设计过程有了更深的了解,促进了对理论知识的消化与吸收,也巩固和完善了本门课程的知识体系结构。设计过程中遇到了不少的麻烦,在调试过程中也出现一些平时学习过程中没有遇到过的错误,通过在课程设计中老师耐心指导以及查阅相关资料
36、,努力思考,一一解决了遇到的问题,通过这些问题,我对课本知识的理解也加深了。终上所述,课程设计诚然是一门专业课,给我们很多专业知识以及很多专也技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道理、给了我很多思想、给了我莫大的空间,大学教育当如此!6 附录Win 主主类类import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import java.util.LinkedList;import java.io.*;public class Win extends
37、JFrame implements ActionListener JMenuBar mainMenu;/菜单 JMenu viewMenu, helpMenu; JMenuItem copyItem, clearItem, saveItem, topHelp,aboutCal; JPanel left,right; JTextField resultShow; /显示计算结果 JTextField showComputerProcess; /显示当前计算过程 JTextArea saveComputerProcess; /显示计算步骤 JPanel southInPanelRight; JBu
38、tton copy,clear,save; JSplitPane split; NumberButton numberButton; OperationButton operationButton; JButton 小数点,正负号,退格,等号,清零,sin,cos,tan,sqrt,x2,求余,log; LinkedList list; /链表用来存放第一个运算数、运算符号和第二个运算数 HandleDigit handleDigit; /负责处理ActionEvent事件 HandleOperation handleOperation ; HandleBack handleBack; Han
39、dleClear handleClear; HandleEquality handleEquality; HandleDot handleDot; HandlePOrN handlePOrN; HandleSin handleSin; HandleCos handleCos; HandleTan handleTan; HandleLog handleLog; HandleSqrt handleSqrt; /* HandleX2 handleX2;*/public Win() setTitle(计算器);left=new JPanel();right=new JPanel();left.setL
40、ayout(new BorderLayout();mainMenu = new JMenuBar(); viewMenu =new JMenu(查看(V); viewMenu .setMnemonic(KeyEvent.VK_V); helpMenu =new JMenu(帮助(H); helpMenu .setMnemonic(KeyEvent.VK_H); copyItem=new JMenuItem(复制 (c); clearItem=new JMenuItem(清除(t); saveItem =new JMenuItem(保存 (p); copyItem.setAccelerator(
41、KeyStroke.getKeyStroke(c);/设置快捷方式 clearItem.setAccelerator(KeyStroke.getKeyStroke(t); saveItem.setAccelerator(KeyStroke.getKeyStroke(p); aboutCal=new JMenuItem(关于计算器); topHelp=new JMenuItem(查看帮助); viewMenu.add(copyItem); viewMenu.add(clearItem); viewMenu.add(saveItem); helpMenu.add(topHelp); helpMen
42、u.add(aboutCal); mainMenu .add(viewMenu ); mainMenu .add(helpMenu) ; setJMenuBar(mainMenu); list=new LinkedList(); split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,left,right);resultShow=new JTextField(10);resultShow.setHorizontalAlignment(JTextField.RIGHT); resultShow.setForeground(Color.blue); res
43、ultShow.setFont(new Font(TimesRoman,Font.BOLD,16); resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED); resultShow.setEditable(false); resultShow.setBackground(Color.pink); showComputerProcess=new JTextField(); showComputerProcess.setHorizontalAlignment(JTextField.CENTER); showComputerProc
44、ess.setFont(new Font(Arial,Font.BOLD,16); showComputerProcess.setBackground(Color.cyan); showComputerProcess.setEditable(false); saveComputerProcess=new JTextArea(5,10); saveComputerProcess.setEditable(false); saveComputerProcess.setFont(new Font(宋体,Font.PLAIN,16); saveComputerProcess.setBackground(
45、Color.yellow); numberButton=new NumberButton10; handleDigit=new HandleDigit(list,resultShow,showComputerProcess); for(int i=0;i=9;i+) numberButtoni=new NumberButton(i); numberButtoni.setFont(new Font(Arial,Font.BOLD,20); numberButtoni.addActionListener(handleDigit); operationButton=new OperationButt
46、on5; handleOperation=new HandleOperation(list,resultShow, showComputerProcess,saveComputerProcess); String 运算符号=+,-,*,/; for(int i=0;i4;i+) operationButtoni=new OperationButton(运算符号i); operationButtoni.setFont(new Font(Arial,Font.BOLD,20); operationButtoni.addActionListener(handleOperation); 小数点=new
47、 JButton(.); handleDot=new HandleDot(list,resultShow,showComputerProcess); 小数点.addActionListener(handleDot); 正负号=new JButton(+/-); handlePOrN=new HandlePOrN(list,resultShow,showComputerProcess); 正负号.addActionListener(handlePOrN); 等号=new JButton(=); handleEquality=new HandleEquality(list,resultShow,
48、showComputerProcess,saveComputerProcess); 等号.addActionListener(handleEquality); sin=new JButton(sin); handleSin=new HandleSin(list,resultShow, showComputerProcess,saveComputerProcess); sin.addActionListener(handleSin); cos=new JButton(cos); handleCos=new HandleCos(list,resultShow, showComputerProces
49、s,saveComputerProcess); cos.addActionListener(handleCos); tan=new JButton(tan); handleTan=new HandleTan(list,resultShow, showComputerProcess,saveComputerProcess); tan.addActionListener(handleTan); log=new JButton(log); handleLog=new HandleLog(list,resultShow, showComputerProcess,saveComputerProcess)
50、; log.addActionListener(handleLog); sqrt=new JButton(sqrt); handleSqrt=new HandleSqrt(list,resultShow, showComputerProcess,saveComputerProcess); sqrt.addActionListener(handleSqrt); x2=new JButton(x2); x2=new JButton(x2); / handleX2=new HandleX2(list,resultShow,showComputerProcess); / handleX2.addAct
51、ionListener(handleX2); */ 退格=new JButton(退格); handleBack=new HandleBack(list,resultShow,showComputerProcess); 退格.addActionListener(handleBack); 清零=new JButton(C); handleClear=new HandleClear(list,resultShow,showComputerProcess); 清零.addActionListener(handleClear); 清零.setForeground(Color.red); 退格.setF
52、oreground(Color.red); 等号.setForeground(Color.red); sin.setForeground(Color.red); 正负号.setForeground(Color.blue); 小数点.setForeground(Color.blue); cos.setForeground(Color.red); tan.setForeground(Color.red); log.setForeground(Color.red); sqrt.setForeground(Color.red); x2.setForeground(Color.red); JPanel
53、centerInLeft=new JPanel(); left.add(resultShow,BorderLayout.NORTH); left.add(centerInLeft,BorderLayout.CENTER); centerInLeft.setLayout(new GridLayout(5,5); centerInLeft.add(sin); centerInLeft.add(cos); centerInLeft.add(tan); centerInLeft.add(log); centerInLeft.add(清零); centerInLeft.add(numberButton1
54、); centerInLeft.add(numberButton2); centerInLeft.add(numberButton3); centerInLeft.add(operationButton0); centerInLeft.add(退格); centerInLeft.add(numberButton4); centerInLeft.add(numberButton5); centerInLeft.add(numberButton6); centerInLeft.add(operationButton1); centerInLeft.add(x2); centerInLeft.add
55、(numberButton7); centerInLeft.add(numberButton8); centerInLeft.add(numberButton9); centerInLeft.add(operationButton2); centerInLeft.add(sqrt); centerInLeft.add(numberButton0); centerInLeft.add(小数点); centerInLeft.add(正负号); centerInLeft.add(operationButton3); centerInLeft.add(等号); southInPanelRight=ne
56、w JPanel(); copy=new JButton(复制 ); clear=new JButton(清除); save=new JButton(保存); save.setToolTipText(保存计算过程到文件); copy.setToolTipText(复制选中的计算过程); clear.setToolTipText(清楚计算过程); save.addActionListener(this); copy.addActionListener(this); clear.addActionListener(this); saveItem.addActionListener(this); c
57、opyItem.addActionListener(this); clearItem.addActionListener(this); aboutCal.addActionListener(this); topHelp.addActionListener(this); right.setLayout(new BorderLayout(); right.add(showComputerProcess,BorderLayout.NORTH); right.add(saveComputerProcess,BorderLayout.CENTER); right.add(southInPanelRigh
58、t,BorderLayout.SOUTH); southInPanelRight.add(copy); southInPanelRight.add(clear); southInPanelRight.add(save);this.add(split);this.setVisible(true);this.setBounds(100, 50, 528, 258); public void actionPerformed(ActionEvent e) if(e.getSource()=copy|e.getSource()=copyItem) saveComputerProcess.copy();
59、if(e.getSource()=clear|e.getSource()=clearItem) saveComputerProcess.setText(null); if(e.getSource()=save|e.getSource()=saveItem) JFileChooser chooser=new JFileChooser(); int state=chooser.showSaveDialog(null); File file=chooser.getSelectedFile(); if(file!=null&state=JFileChooser.APPROVE_OPTION)
60、try String content=saveComputerProcess.getText(); StringReader read=new StringReader(content); BufferedReader in= new BufferedReader(read); FileWriter outOne=new FileWriter(file); BufferedWriter out= new BufferedWriter(outOne); String str=null; while(str=in.readLine()!=null) out.write(str); out.newLine(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脑梗塞患者的智能康复训练
- 2026年项目管理成熟度评估与改进指南
- 自闭症儿童的家庭干预计划
- 2026年康复治疗学专业实操实训报告
- 2026年社区新进护士岗前培训计划
- 练习9 《赏析小说的形象描写》同步练习 (含答案解析)2027年高考一轮总复习
- 2026届重庆市高三考前模拟预测语文试卷(原卷版及解析)
- 2026年幼儿园冬季用火取暖防一氧化碳中毒
- 2026年儿科医院感染管理质量持续改进
- 肉制品电商代运营合作协议
- 第19课 清朝君主专制的强化 课件 人教统编七年级历史下册
- API STD 667-2022 板式和框架式热交换器
- 2024年甘肃定西中考数学试题及答案2
- 2023BIM三维场布实施标准
- 《建设工程造价咨询工期标准(房屋、市政及城市轨道交通工程)》
- 2024年新课标高考物理试卷(适用黑龙江、辽宁、吉林地区 真题+答案)
- 8S管理培训基础知识课件
- 小学科学教学仪器配备标准
- 城市智慧路灯(5G综合灯杆)建设工程项目(含方案设计及项目实施方案)
- SWITCH暗黑破坏神3超级金手指修改 版本号:2.7.4.84040
- 浙江省消防技术规范难点问题操作技术指南(2020版)
评论
0/150
提交评论