java计算器源码_第1页
java计算器源码_第2页
java计算器源码_第3页
java计算器源码_第4页
java计算器源码_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目1:计算器的设计与实现代码如下:(修改的部分用回色底纹标出)/*- CalculatorWindow -*/import java.awt.*;import java.awt.event.*;import javax.swing.*;/声明下面的JTextField/Area/JButton会用到这个包import javax.swing.border.*;import java.util.LinkedList;/引入泛型包import java.io.*;public class CalculatorWindow extends JFrame implements ActionListe

2、ner NumberButton numberButton; Handlepi handlepi; OperationButton operationButton; JButton 小数点操作,正负号操作,退格操作,等号操作,清零操作,sin,cos,tan,开根号,平方,立方根,acos,asin,atan,立方,阶乘; JTextField resultShow; /下面一大串都是用来声明各个类的新对象,如果这里不声明也可在用的地方声明,显示计算结果 JTextField showComputerProcess;/显示当前计算过程 JTextArea saveComputerProcess

3、; /显示计算步骤 JButton saveButton,copyButton,clearButton; LinkedList list; /链表用来存放第一个运算数、运算符号和第二个运算数 HandleDigit handleDigit; /负责处理ActionEvent事件 HandleDigit1 handleDigit1; HandleOperation handleOperation ; HandleBack handleBack; HandleClear handleClear; HandleEquality handleEquality; HandleDot handleDot;

4、 HandlePOrN handlePOrN; HandleSin handleSin; HandleCos handleCos; HandleTan handleTan; Handlekaigen handlekaigen; Handlelfg handlelfg; Handleacos handleacos; Handleasin handleasin; Handleatan handleatan; Handlepf handlepf; Handlelf handlelf; Handlejch handlejch; /-菜单项声明- JMenuBar menubar; JMenu menu

5、,submenu; JMenuItem jsqj,jsqk,jsqb; public CalculatorWindow() setTitle(计算器);/窗口名 JPanel panelLeft,panelRight; /创建两个轻量级左右容器 list=new LinkedList(); resultShow=new JTextField(10);/文本框的长度 resultShow.setHorizontalAlignment(JTextField.RIGHT);/让标签中的文字内容在标签内按照指定的方式对齐。 resultShow.setForeground(Color.blue);/输

6、入的数字在resultshow中显示的颜色 resultShow.setFont(new Font(宋体,Font.BOLD,30);/说明:宋体,粗体,16号字。 resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED);/设置边框 resultShow.setEditable(false);/控件不能被编辑,如果设为true或者不调用这个函数,则控件可以编辑 resultShow.setBackground(Color.white);/-对当前计算过程区域进行构建- showComputerProcess=new JText

7、Field(); showComputerProcess.setHorizontalAlignment(JTextField.CENTER);/过程区域对其方式 showComputerProcess.setFont(new Font(Arial,Font.BOLD,16); showComputerProcess.setBackground(Color.cyan); showComputerProcess.setEditable(false);/-显示计算步奏区域进行构建-saveComputerProcess=new JTextArea(); saveComputerProcess.set

8、Editable(false); saveComputerProcess.setFont(new Font(宋体,Font.PLAIN,16);/十个数字键生成- numberButton=new NumberButton10;/定义十个按钮数组用来存放按钮的值 handlepi=new Handlepi1; handleDigit=new HandleDigit(list,resultShow,showComputerProcess); for(int i=0;i=9;i+)/循环输出十个按钮 numberButtoni=new NumberButton(i);/对应调用NumberButt

9、on函数 numberButtoni.setFont(new Font(Arial,Font.BOLD,20); numberButtoni.addActionListener(handleDigit);/用addActionListener就可以给这个按钮添加一个监听者,一旦有事件发生(比如鼠标点击),监听者都可以得到这个事件,并可以把事件信息(例如事件源)传给事件处理函数 handleDigit1=new HandleDigit1(list,resultShow,showComputerProcess); handlepi0 =new Handlepi();/对应调用NumberButto

10、n函数 handlepi0.setFont(new Font(Arial,Font.BOLD,20); handlepi0.addActionListener(handleDigit1); /六个操作按钮- operationButton=new OperationButton6; handleOperation=new HandleOperation(list,resultShow, showComputerProcess,saveComputerProcess); String 运算符号=+,-,*,/,%,; /实现在HandleOperation里 for(int i=0;i6;i+)

11、 operationButtoni=new OperationButton(运算符号i); operationButtoni.setFont(new Font(Arial,Font.BOLD,20); operationButtoni.addActionListener(handleOperation); /-其他按钮的效果及功能的实- 小数点操作=new JButton(.); handleDot=new HandleDot(list,resultShow,showComputerProcess); 小数点操作.addActionListener(handleDot); 正负号操作=new

12、JButton(+/-); handlePOrN=new HandlePOrN(list,resultShow,showComputerProcess); 正负号操作.addActionListener(handlePOrN); 等号操作=new JButton(=); handleEquality=new HandleEquality(list,resultShow, showComputerProcess,saveComputerProcess); 等号操作.addActionListener(handleEquality); /-sin的实现- sin=new JButton(sin);

13、 handleSin=new HandleSin(list,resultShow, showComputerProcess,saveComputerProcess); sin.addActionListener(handleSin);/新功能cos的实现- cos=new JButton(cos); handleCos=new HandleCos(list,resultShow, showComputerProcess,saveComputerProcess); cos.addActionListener(handleCos);/tan定义- tan=new JButton(tan); han

14、dleTan=new HandleTan(list,resultShow, showComputerProcess,saveComputerProcess); tan.addActionListener(handleTan);/-反余弦- acos=new JButton(acos); handleacos=new Handleacos(list,resultShow, showComputerProcess,saveComputerProcess); acos.addActionListener(handleacos);/反正玄- asin=new JButton(asin); handle

15、asin=new Handleasin(list,resultShow, showComputerProcess,saveComputerProcess); asin.addActionListener(handleasin);/-反正切- atan=new JButton(atan); handleatan=new Handleatan(list,resultShow, showComputerProcess,saveComputerProcess); atan.addActionListener(handleatan);/-开根号定义- 开根号=new JButton(平方根); hand

16、lekaigen=new Handlekaigen(list,resultShow, showComputerProcess,saveComputerProcess); 开根号.addActionListener(handlekaigen);/-求平方- 平方=new JButton(平方); handlepf=new Handlepf(list,resultShow, showComputerProcess,saveComputerProcess); 平方.addActionListener(handlepf);/-立方根- 立方根=new JButton(立方根); handlelfg=n

17、ew Handlelfg(list,resultShow, showComputerProcess,saveComputerProcess); 立方根.addActionListener(handlelfg);/-立方- 立方=new JButton(立方); handlelf=new Handlelf(list,resultShow, showComputerProcess,saveComputerProcess); 立方.addActionListener(handlelf);/-阶乘- 阶乘=new JButton(X!); handlejch=new Handlejch(list,re

18、sultShow, showComputerProcess,saveComputerProcess); 阶乘.addActionListener(handlejch);/-删除- 退格操作=new JButton(); handleBack=new HandleBack(list,resultShow,showComputerProcess); 退格操作.addActionListener(handleBack);/-清空操作- 清零操作=new JButton(C); handleClear=new HandleClear(list,resultShow,showComputerProces

19、s); 清零操作.addActionListener(handleClear); /-设置他们在窗体中的显示颜色 清零操作.setForeground(Color.red); 退格操作.setForeground(Color.red); 等号操作.setForeground(Color.red); sin.setForeground(Color.blue); cos.setForeground(Color.blue); tan.setForeground(Color.blue); 正负号操作.setForeground(Color.blue); 小数点操作.setForeground(Colo

20、r.blue); 开根号.setForeground(Color.green); 平方.setForeground(Color.green); 立方根.setForeground(Color.green); 立方.setForeground(Color.green); asin.setForeground(Color.orange); acos.setForeground(Color.orange); atan.setForeground(Color.orange); 阶乘.setForeground(Color.magenta); /-菜单实现- menubar=new JMenuBar()

21、; menu=new JMenu(类型选择); submenu=new JMenu(计算器类型); jsqj=new JMenuItem(简单计算器); jsqk=new JMenuItem(科学计算器); jsqb=new JMenuItem(编程计算器); menubar.add(menu); menu.add(submenu); submenu.add(jsqj); submenu.add(jsqk); submenu.add(jsqb); /-左右区域的实现- panelLeft=new JPanel(); panelRight=new JPanel(); panelLeft.setL

22、ayout(new BorderLayout(); JPanel centerInLeft=new JPanel();panelLeft.add(menubar,BorderLayout.BEFORE_FIRST_LINE); panelLeft.add(resultShow,BorderLayout.CENTER); panelLeft.add(centerInLeft,BorderLayout.AFTER_LAST_LINE); centerInLeft.setLayout(new GridLayout(5,6); centerInLeft.add(numberButton1); cent

23、erInLeft.add(numberButton2); centerInLeft.add(numberButton3); centerInLeft.add(operationButton0); centerInLeft.add(numberButton4); centerInLeft.add(numberButton5); centerInLeft.add(numberButton6); centerInLeft.add(operationButton1); centerInLeft.add(numberButton7); centerInLeft.add(numberButton8); c

24、enterInLeft.add(numberButton9); centerInLeft.add(operationButton2); centerInLeft.add(numberButton0); centerInLeft.add(handlepi0); centerInLeft.add(小数点操作); centerInLeft.add(operationButton3); centerInLeft.add(清零操作); centerInLeft.add(退格操作); centerInLeft.add(operationButton4); centerInLeft.add(等号操作); p

25、anelRight.setLayout(new BorderLayout(); panelRight.add(showComputerProcess,BorderLayout.NORTH); saveButton=new JButton(保存); copyButton=new JButton(复制); clearButton=new JButton(清除); saveButton.setToolTipText(保存计算过程到文件); copyButton.setToolTipText(复制选中的计算过程); clearButton.setToolTipText(清除计算过程); saveBut

26、ton.addActionListener(this); copyButton.addActionListener(this); clearButton.addActionListener(this); jsqj.addActionListener(this); jsqk.addActionListener(this); panelRight.add(new JScrollPane(saveComputerProcess),BorderLayout.CENTER); JPanel southInPanelRight=new JPanel(); southInPanelRight.add(sav

27、eButton); southInPanelRight.add(copyButton); southInPanelRight.add(clearButton); panelRight.add(southInPanelRight,BorderLayout.SOUTH); JSplitPane split=new JSplitPane (JSplitPane.HORIZONTAL_SPLIT,panelLeft,panelRight); add(split,BorderLayout.CENTER); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); s

28、etVisible(true);setBounds(100,50,400,350);/setBounds(x,y,width,height); x:组件在容器X轴上的起点 y:组件在容器Y轴上的起点 width:组件的长度 height:组件的 validate();/如果容器中的控件变了,就有需要,让容器对内容控件进行一次布局 public void actionPerformed(ActionEvent e) if(e.getSource()=jsqk) new kxjsq(); this. dispose(); if(e.getSource()=jsqj) new CalculatorW

29、indow(); if(e.getSource()=copyButton) saveComputerProcess.copy(); if(e.getSource()=clearButton) saveComputerProcess.setText(null); if(e.getSource()=saveButton) JFileChooser chooser=new JFileChooser(); int state=chooser.showSaveDialog(null); File file=chooser.getSelectedFile(); if(file!=null&state=JF

30、ileChooser.APPROVE_OPTION) 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()!=nul

31、l) out.write(str); out.newLine(); in.close(); out.close(); catch(IOException e1) public static void main(String args) new CalculatorWindow(); /*- Handle16十六进制-*/import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class Handle16 implements ActionListener LinkedList list; J

32、TextField resultShow,showComputerProcess; JTextArea saveComputerProcess; Handle16(LinkedList list,JTextField t1,JTextField t2, JTextArea t3) this.list=list; resultShow=t1; showComputerProcess=t2; saveComputerProcess=t3; public void actionPerformed(ActionEvent e) if(list.size()=1|list.size()=2) Strin

33、g numOne=list.getFirst(); try double x=Double.parseDouble(numOne); String result; String s; s=Integer.toHexString(int)x); result=s; String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); String proccess=+numOne+(16)=+result; showComputerProcess.setText(proccess); saveComputerPr

34、ocess.append( +proccess+n); if(list.size()=2) list.removeLast(); /移掉运算符号 catch(Exception ee) else if(list.size()=3) String numTwo=list.getLast(); try double x=Double.parseDouble(numTwo); String result; String s; s=Integer.toHexString(int)x); result=s; String str=String.valueOf(result); list.set(0,st

35、r); resultShow.setText(str); String proccess=+numTwo+(16)=+result; showComputerProcess.setText(proccess); saveComputerProcess.append( +proccess+n); list.removeLast(); /移掉第2个运算数 list.removeLast(); /移掉运算符号 catch(Exception ee) /*- Handle8 八进制-*/import java.util.LinkedList;import javax.swing.*;import ja

36、va.awt.event.*;public class Handle8 implements ActionListener LinkedList list; JTextField resultShow,showComputerProcess; JTextArea saveComputerProcess; Handle8(LinkedList list,JTextField t1,JTextField t2, JTextArea t3) this.list=list; resultShow=t1; showComputerProcess=t2; saveComputerProcess=t3; p

37、ublic void actionPerformed(ActionEvent e) if(list.size()=1|list.size()=2) String numOne=list.getFirst(); try double x=Double.parseDouble(numOne); String result; String s; s=Integer.toOctalString(int)x); result=s; String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); String pro

38、ccess=+numOne+(8)=+result; showComputerProcess.setText(proccess); saveComputerProcess.append( +proccess+n); if(list.size()=2) list.removeLast(); /移掉运算符号 catch(Exception ee) else if(list.size()=3) String numTwo=list.getLast(); try double x=Double.parseDouble(numTwo); String result; String s; s=Intege

39、r.toOctalString(int)x); result=s; String str=String.valueOf(result); list.set(0,str); resultShow.setText(str); String proccess=+numTwo+(8)=+result; showComputerProcess.setText(proccess) saveComputerProcess.append( +proccess+n); list.removeLast(); /移掉第2个运算数 list.removeLast(); /移掉运算符号 catch(Exception

40、ee) /*- Handleacos 同sin-*/*- Handleasin同sin -*/*- Handleatan同sin -*/*- HandleBack -*/import java.util.LinkedList;import javax.swing.*;import java.awt.event.*;public class HandleBack implements ActionListener LinkedList list; JTextField resultShow,showComputerProcess; HandleBack(LinkedList list,JText

41、Field t1,JTextField t2) this.list=list; resultShow=t1; showComputerProcess=t2; public void actionPerformed(ActionEvent e) if(list.size()=1) String num=(String)list.getFirst(); if(num.length()=1) num=num.substring(0,num.length()-1); list.set(0,num); resultShow.setText(num); showComputerProcess.setTex

42、t(+num); else list.removeLast(); resultShow.setText(0); showComputerProcess.setText(0); else if(list.size()=3) String num=(String)list.getLast(); if(num.length()=1) num=num.substring(0,num.length()-1); list.set(2,num); resultShow.setText(num); showComputerProcess.setText(num); else list.removeLast(); result

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论