【Java精品源码栏目提醒】:网学会员,鉴于大家对Java精品源码十分关注,论文会员在此为大家搜集整理了“〔精品文档〕:Java计算器源码[1] - 其它管理文献”一文,供大家参考学习!
计算器本计算器有显示过程和不显示过程两种功能其中不显示过程为普通计算器类似于windows自带的计算器显示过程的可以显示预算过程其中包含所需应用的部分函数以及格式化功能最左上角第一个键格式化然后输入需要格式化的数位然后点第二个数显示格式化结果当一次运算结束后会在右边自动显示运算过程并且运算过程处有保存复制粘贴清除功能。
代码如下 主类 import ZF. public class JiSuanQi public static void mainString args Calculator c new Calculatorquot计算器quot 包ZF中的类 Calculator类 package ZF / 计算器布局界面 / import
java.io. import
java.awt. import javax.swing. import
java.awt.event. public class Calculator extends JFrame implements ActionListener static int xg 1// 用于判断是否显示过程初始状态为显示 JSplitPane jsp1 jsp2 jsp3 static JTextField jtf// 文本框 static JTextArea jta// 保存等的历史文本区 public static String zc// 用来暂时存储数字实现第一个菜单选项 JScrollPane JS// 专门用于给文本区提供滚动条 public static FileDialog load save// 声明引入对话框 BufferedReader in// FileReader reader// JP1 jp1 JP2 jp2 JP3 jp3 JP4 jp4 JP5 jp5 // 菜单条 JMenuBar mb JMenu m0 m1 m2 JMenuItem m01 m02 m03 m04 m11 m12 m21 m22 public CalculatorString s supers Container con getContentPane // 桌面 jp1 new JP1 jp2 new JP2 jp3 new JP3 jp4 new JP4 jp5 new JP5 jta new JTextArea jta.setEditablefalse JS new JScrollPanejta jsp1 new JSplitPaneJSplitPane.VERTICAL_SPLIT false jp1 jp2 jsp2 new JSplitPaneJSplitPane.VERTICAL_SPLIT false jp3 JS jsp3 new JSplitPaneJSplitPane.VERTICAL_SPLIT false jp4 jp5 jtf new JTextField jtf.setTextString.valueOf0 jtf.setEditablefalse jtf.setBackgroundColor.white load new FileDialogthis quot读取历史运算过程quot FileDialog.LOAD load.setVisiblefalse load.addWindowListenernew WindowAdapter public void windowClosingWindowEvent e load.setVisiblefalse save new FileDialogthis quot保存历史运算过程quot FileDialog.SAVE save.setVisiblefalse save.addWindowListenernew WindowAdapter public void windowClosingWindowEvent e save.setVisiblefalse // 菜单条 mb new JMenuBar m0 new JMenuquot编辑quot m1 new JMenuquot查看quot m2 new JMenuquot帮助quot m01 new JMenuItemquot复制quot m02 new JMenuItemquot粘贴quot m03 new JMenuItemquot读取quot m04 new JMenuItemquot关闭quot m01.addActionListenerthis m02.addActionListenerthis m03.addActionListenerthis m04.addActionListenerthis m11 new JMenuItemquot不显过程quot m12 new JMenuItemquot显示过程quot m11.addActionListenerthis m12.addActionListenerthis m21 new JMenuItemquot帮助主题quot m22 new JMenuItemquot关于计算器quot m21.addActionListenerthis m22.addActionListenerthis m0.addm01 m0.addm02 m0.addm03 m0.addm04 m1.addm11 m1.addm12 m2.addm21 m2.addSeparator m2.addm22 mb.addm0 mb.addm1 mb.addm2 setJMenuBarmb con.addjtf BorderLayout.NORTH con.addjsp1 BorderLayout.CENTER con.addjsp2 BorderLayout.EAST con.addjsp3 BorderLayout.WEST setDefaultCloseOperationJFrame.DISPOSE_ON_CLOSE setBounds100 100 800 260 setResizablefalse setVisibletrue validate public void actionPerformedActionEvent e if jtf.getText.equalsquoterrorquot if e.getSource m01 zc jtf.getText else if e.getSource m02 if zc null if xg 1 if jtf.getText.equalsquot0quot jtf.setTextzc else jtf.setTextjtf.getText zc else jtf.setTextzc if e.getSource m03 //读取文件 Calculator.load.setVisibletrue Calculator.jta.setTextnull String s ifCalculator.load.getFilenull try File filenew FileCalculator.load.getDirectoryCalculator.load.getFile readernew FileReaderfile innew BufferedReaderreader whilesin.readLinenull Calculator.jta.appendsn in.close reader.close catchIOException e2Calculator.jta.appendquot读取错误quot else if e.getSource m04 System.exit0 else if e.getSource m11 // 换窗体大小同时换规则 setSize320 260 removejsp2 removejsp3 JP2.sf 0 jtf.setTextString.valueOf0 xg 0 // 改变菜单选项的可选性 m03.setEnabledfalse m04.setEnabledfalse // 换对齐方式 JP2.sf 0 jtf.setEditablefalse jtf.setBackgroundColor.white jtf.setComponentOrientationComponentOrientation.RIGHT_TO_LEFT validate else if e.getSource m12 setSize800 260 addjsp2 BorderLayout.EAST addjsp3 BorderLayout.WEST JP2.sf 0 jtf.setTextString.valueOf0 xg 1 m03.setEnabledtrue m04.setEnabledtrue JP2.eg 0 jtf.setEditablefalse jtf.setBackgroundColor.white jtf.setComponentOrientationComponentOrientation.LEFT_TO_RIGHT validate else if e.getSource m21 JOptionPane.showMessageDialogthis quot本计算器以模仿Windows系统自带计算器为主详情请参照系统计算器“帮助主题”。
quot quot帮助主题quot JOptionPane.INFORMATION_MESSAGE else if e.getSource m22 new JAquot关于计算器quot JA类 package ZF import
java.awt. import javax.swing. public class JA extends JFrame JLabel jl new JLabel6 JTextField jtf1 new JTextField6 JTextField jtf2 new JTextField6 public JAString s supers setLayoutnew GridLayout6 3 jl0 new JLabelquot制作组:quot jl1 new JLabelquot组成员:quot for int i 2 i lt 6 i jli new JLabel jtf10 new JTextFieldquot小叮当quot jtf11 new JTextFieldquot曹剑quot jtf12 new JTextFieldquot李剑quot jtf13 new JTextFieldquot王斌quot jtf14 new JTextFieldquot翟鹏翔quot jtf15 new JTextFieldquot奥然quot jtf20 new JTextFieldquot第一组quot jtf21 new JTextFieldquot项目经理quot for int i 2 i lt 6 i jtf2i new JTextFieldquot程序员quot for int i 0 i lt 6 i jtf1i.setEditablefalse jtf2i.setEditablefalse for int i 0 i lt 6 i addjli addjtf1i addjtf2i setDefaultCloseOperationJFrame.DISPOSE_ON_CLOSE setBounds100 100 250 250 setVisibletrue validate JP1类 package ZF import
java.awt. import javax.swing. import
java.awt.event. public class JP1 extends JPanel implements ActionListener JButton b1 b2 b3 public JP1 setLayoutnew GridLayout1 3 5 5 b1 new JButtonquotBackspacequot b2 new JButtonquotCEquot b3 new JButtonquotCquot b1.addActionListenerthis b2.addActionListenerthis b3.addActionListenerthis addb1 addb2 addb3 public void actionPerformedActionEvent e String s Calculator.jtf.getText if Calculator.jtf.getText.equalsquoterrorquot if e.getSource b1 if s.length 1 Calculator.jtf.setTexts.substring0 s.length - 1 else Calculator.jtf.setTextString.valueOf0 else if e.getSource b2 Calculator.jtf.setTextString.valueOf0 if Calculator.xg 1 JP2.eg 0 if e.getSource b3 Calculator.jtf.setTextString.valueOf0 if Calculator.xg 0 JP2.sf 0 else JP2.eg 0 JP2类 package ZF / 计算器核心部分基本算法按钮 / import
java.awt. import javax.swing. import
java.awt.event. public class JP2 extends JPanel implements ActionListener JButton b new JButton24 static int eg sf gs// eg判断是否摁过按钮sf判断算法 gs用于用于存放给格式化的位数 static double sfg// sfg用于存放各种算法的结果 float zsg// zsg用于存放最终算术结果 static String zgc sgc fh/ zgc用于存放zsg所转换而成的字符串 sgc用于存放sfg所转化而成的字符串 fh用于存放显示的符号 / public JP2 setLayoutnew GridLayout4 5 5 5 for int i 0 i lt 10 i bi new JButtonquotquot i b10 new JButtonquot/-quot b11 new JButtonquot.quot b12 new JButtonquotquot b13 new JButtonquot-quot b14 new JButtonquot×quot b15 new JButtonquot÷quot b16 new JButtonquotquot b17 new JButtonquotsqrtquot b18 new JButtonquotquot b19 new JButtonquot1/xquot for int i 0 i lt 20 i bi.addActionListenerthis addb7 addb8 addb9 addb15 addb17 addb4 addb5 addb6 addb14 addb18 addb1 addb2 addb3 addb13 addb19 addb0 addb10 addb11 addb12 addb16 public static void NumberFaint i // 数字法则 if Calculator.xg 0 // 如果不显示过程 double zhs Double.parseDoubleCalculator.jtf.getText// zhs用于存放暂时获取的数字以下同理 if eg 0 // 判断是否按过加法法则等按钮如果没按过将再次按得数字与原数字组成一个新的字符串 if zhs 0 zhs 0 ampamp Calculator.jtf.getText.indexOfquot.quot -1 // 判断是原来的数字是否为零为零或者不为零但有小数点 Calculator.jtf.setTextCalculator.jtf.getText String.valueOfi else // 因为0不能做第一个数字小数点除外所以如果数字为零则直接设置为按得数字 Calculator.jtf.setTextString.valueOfi else // 如果按过法则按钮则直接设置文本框 Calculator.jtf.setTextString.valueOfi eg 0 else if eg 0 Calculator.jtf.getText.equalsquot0quot Calculator.jtf.setTextString.valueOfi else Calculator.jtf.setTextCalculator.jtf.getText String.valueOfi eg 1 public static void SuanFa // 算法法则 if Calculator.xg 0 // 如果不显示过程 double zhs Double.parseDoubleCalculator.jtf.getText String s quot零quot// 判断除数是否为0 switch sf case 0:// 表示没有按加减乘除等 sfg zhs break case 1: sfg sfg zhs break case 2: sfg sfg - zhs break case 3: sfg sfg zhs break case 4: if zhs 0 sfg sfg / zhs else s null break if s null sgc String.valueOfsfg if Double.parseDoublesgc.substringsgc.indexOfquot.quot 0 // 判断小数点后的数字是否为零如果为零取整 sgc String.valueOfint sfg Calculator.jtf.setTextsgc else Calculator.jtf.setTextString.valueOfsfg else Calculator.jtf.setTextquoterrorquot eg 1 else switch sf case 1: fh quotquot break case 2: fh quot-quot break case 3: fh quot×quot break case 4: fh quot÷quot break Calculator.jtf.setTextCalculator.jtf.getText fh eg 1 public void actionPerformedActionEvent e try if Calculator.jtf.getText.equalsquoterrorquot for int i 0 i lt 10 i // 按钮事件 if e.getSource bi if Calculator.jtf.getText.length lt 44 ampamp Calculator.xg 0 Calculator.jtf.getText.length lt 112 ampamp Calculator.xg 1 // 输入的位数不超过当前文本框 NumberFai for int i 12 i lt 16 i // 运算事件 if e.getSource bi if Calculator.xg 0 SuanFa sf i - 11 else sf i - 11 SuanFa if e.getSource b10 if Calculator.xg 0 double zhs Double.parseDoubleCalculator.jtf .getText String s String.valueOfzhs -1 if Double.parseDoubles.substrings.indexOfquot.quot 0 s String.valueOfint zhs -1 Calculator.jtf.setTexts else Calculator.jtf.setTexts // sf 0 else if Calculator.jtf.getText.equalsquot0quot eg 0 Calculator.jtf.setTextquot-quot else Calculator.jtf.setTextCalculator.jtf.getText quot-quot eg 1 else if e.getSource b11 if Calculator.xg 0 double zhs Double.parseDoubleCalculator.jtf .getText if eg 0 if zhs 0 Calculator.jtf.setTextCalculator.jtf.getText quot.quot else Calculator.jtf.setTextquot0.quot else Calculator.jtf.setTextString.valueOf0. eg 0 else if eg 1 Calculator.jtf.setTextCalculator.jtf.getText quot.quot else Calculator.jtf.setTextquot0.quot eg 1 if e.getSource b16 if Calculator.xg 0 double zhs Double.parseDoubleCalculator.jtf .getText switch sf case 0: zsg float zhs zgc String.valueOfzsg break case 1: zsg float sfg zhs zgc String.valueOfzsg break case 2: zsg float sfg - zhs zgc String.valueOfzsg break case 3: zsg float sfg zhs zgc String.valueOfzsg break case 4: if zhs 0 zsg float sfg / zhs zgc String.valueOfzsg else zgc null break if zgc null Calculator.jtf.setTextquoterrorquot else if Double.parseDoublezgc.substringzgc .indexOfquot.quot 0 zgc String.valueOfint zsg Calculator.jtf.setTextzgc else Calculator.jtf.setTextzgc sf 0 eg 1 else // 显示过程的运算结果 try sgc Calculator.jtf.getText new JSsgc if JS.zgc.equalsquoterrorquot if JS.zgc.indexOfquot.quot -1 ampamp Double .parseDoubleJS.zgc .substringJS.zgc .indexOfquot.quot 0 Calculator.jtf.setTextString .valueOfint Double .parseDoubleJS.zgc Calculator.jta.appendsgc quotquot int Double.parseDoubleJS.zgc quotnquot else Calculator.jtf.setTextJS.zgc Calculator.jta.appendsgc quotquot JS.zgc quotnquot eg 0 catch NumberFormatException ee Calculator.jtf.setTextquoterrorquot else if e.getSource b17 if Calculator.xg 0 if Double.parseDoubleCalculator.jtf.getText gt 0 double zhs Math.sqrtDouble .parseDoubleCalculator.jtf.getText String s String.valueOfzhs if Double.parseDoubles.substrings.indexOfquot.quot 0 s String.valueOfint zhs Calculator.jtf.setTexts else Calculator.jtf.setTexts else Calculator.jtf.setTextquoterrorquot else if Calculator.jtf.getText.equalsquot0quot eg 0 Calculator.jtf.setTextquot√quot else Calculator.jtf.setTextCalculator.jtf.getText quot√quot eg 1 else if e.getSource b18 if Calculator.xg 0 double zhs Double.parseDoubleCalculator.jtf .getText String s String.valueOfzhs / 100 if Double.parseDoubles.substrings.indexOfquot.quot 0 s String.valueOfint zhs / 100 Calculator.jtf.setTexts else Calculator.jtf.setTexts else if Calculator.jtf.getText.equalsquot0quot eg 0 Calculator.jtf.setTextquotquot else Calculator.jtf.setTextCalculator.jtf.getText quotquot eg 1 else if e.getSource b19 //倒数的处理方案 if Calculator.xg 0 String s double zhs Double.parseDoubleCalculator.jtf .getText if zhs 0 s String.valueOf1 / zhs else s quoterrorquot Calculator.jtf.setTexts else // 过程中处理1/x的方法 if Calculator.jtf.getText.equalsquot0quot eg 0 Calculator.jtf.setTextquot1/quot else Calcul.
上一篇:
【精品】连连求java小游戏源代码
下一篇:
护理干预对中等面积烧伤患者焦虑及生活质量的影响