JFrame先关类写的一个计算器代码

更新时间:2018-06-13 17:37:10 点击次数:1487次
[java] view plain copy
  1. package com.yiyun.util;  
  2.   
  3. import java.awt.BorderLayout;  
  4. import java.awt.GridLayout;  
  5. import java.awt.event.MouseEvent;  
  6. import java.awt.event.MouseListener;  
  7. import java.text.DecimalFormat;  
  8. import javax.swing.JButton;  
  9. import javax.swing.JFrame;  
  10. import javax.swing.JPanel;  
  11. import javax.swing.JTextField;  
  12. public class Calculator {  
  13.     //计算器面板  
  14.     private JFrame f = new JFrame("Calculator");  
  15.     //输入面扳  
  16.     private JPanel inputPanel = new JPanel();  
  17.     //加减乘除面板  
  18.     private JPanel operationPanel = new JPanel();  
  19.     //数字面板  
  20.     private JPanel buttonsPanel = new JPanel();  
  21.       
  22.     //输入数据文本框  
  23.     private JTextField input = new JTextField(20);  
  24.       
  25.     //退格键  
  26.     private JButton backspace = new JButton("BackSpace");  
  27.     //清空  
  28.     private JButton CE = new JButton("CE  ");  
  29.     //删除  
  30.     private JButton C = new JButton("C  ");  
  31.       
  32.     //四则运算符号键  
  33.     private JButton add = new JButton("+");  
  34.     private JButton sub = new JButton("-");  
  35.     private JButton mul = new JButton("*");  
  36.     private JButton div = new JButton("/");  
  37.       
  38.     //小数点  
  39.     private JButton decimal = new JButton(".");  
  40.     //等号  
  41.     private JButton equal = new JButton("=");  
  42.       
  43.     //数字键  
  44.     private JButton zero = new JButton("0");  
  45.     private JButton one = new JButton("1");  
  46.     private JButton two = new JButton("2");  
  47.     private JButton three = new JButton("3");  
  48.     private JButton four = new JButton("4");  
  49.     private JButton five = new JButton("5");  
  50.     private JButton six = new JButton("6");  
  51.     private JButton seven = new JButton("7");  
  52.     private JButton eight = new JButton("8");  
  53.     private JButton nine = new JButton("9");  
  54.       
  55.     private String num1 = "";//保存个运算数字  
  56.     private String operator = "";//保存运算符号  
  57.       
  58.     public static void main(String[] args) {  
  59.         new Calculator();//new计算器实例  
  60.     }  
  61.       
  62.     public Calculator(){  
  63.          //添加组件,布局  
  64.         inputPanel.add(input);  
  65.         f.add(inputPanel, BorderLayout.NORTH);  
  66.           
  67.         operationPanel.add(backspace);  
  68.         operationPanel.add(CE);  
  69.         operationPanel.add(C);  
  70.         f.add(operationPanel, BorderLayout.CENTER);  
  71.           
  72.         buttonsPanel.add(add);  
  73.         buttonsPanel.add(sub);  
  74.         buttonsPanel.add(mul);  
  75.         buttonsPanel.add(div);  
  76.         buttonsPanel.add(one);  
  77.         buttonsPanel.add(two);  
  78.         buttonsPanel.add(three);  
  79.         buttonsPanel.add(zero);  
  80.         buttonsPanel.add(four);  
  81.         buttonsPanel.add(five);  
  82.         buttonsPanel.add(six);  
  83.         buttonsPanel.add(decimal);  
  84.         buttonsPanel.add(seven);  
  85.         buttonsPanel.add(eight);  
  86.         buttonsPanel.add(nine);  
  87.         buttonsPanel.add(equal);  
  88.         buttonsPanel.setLayout(new GridLayout(44));  
  89.         f.add(buttonsPanel, BorderLayout.SOUTH);  
  90.           
  91.         //注册各个组件监听事件  
  92.         backspace.addMouseListener(new OperationMouseListener());  
  93.         CE.addMouseListener(new OperationMouseListener());  
  94.         C.addMouseListener(new OperationMouseListener());  
  95.         decimal.addMouseListener(new OperationMouseListener());  
  96.         equal.addMouseListener(new OperationMouseListener());  
  97.           
  98.         //注册四则运算监听  
  99.         add.addMouseListener(new CalcMouseListener());  
  100.         sub.addMouseListener(new CalcMouseListener());  
  101.         mul.addMouseListener(new CalcMouseListener());  
  102.         div.addMouseListener(new CalcMouseListener());  
  103.           
  104.         //注册数字监听事件  
  105.         zero.addMouseListener(new NumberMouseListener());  
  106.         one.addMouseListener(new NumberMouseListener());  
  107.         two.addMouseListener(new NumberMouseListener());  
  108.         three.addMouseListener(new NumberMouseListener());  
  109.         four.addMouseListener(new NumberMouseListener());  
  110.         five.addMouseListener(new NumberMouseListener());  
  111.         six.addMouseListener(new NumberMouseListener());  
  112.         seven.addMouseListener(new NumberMouseListener());  
  113.         eight.addMouseListener(new NumberMouseListener());  
  114.         nine.addMouseListener(new NumberMouseListener());  
  115.           
  116.         f.setVisible(true);  
  117.         f.pack();  
  118.         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  119.     }  
  120.       
  121.     private class NumberMouseListener implements MouseListener{  
  122.         public void mouseClicked(MouseEvent e) {  
  123.             if(input.getText().trim().equals("0")){//如果文本框已经是0,结果还是0  
  124.                 input.setText(((JButton)e.getSource()).getText().trim());  
  125.             }else{//否则的话,把0添加到后面,譬如文本框是1,结果就为10  
  126.                 input.setText(input.getText().concat(((JButton)e.getSource()).getText().trim()));  
  127.             }  
  128.         }  
  129.         public void mouseEntered(MouseEvent e) {}  
  130.         public void mouseExited(MouseEvent e) {}  
  131.         public void mousePressed(MouseEvent e) {}  
  132.         public void mouseReleased(MouseEvent e) {}    
  133.     }  
  134.       
  135.     private class CalcMouseListener implements MouseListener{  
  136.         //如果输入的是运算符号,保存个结果和运算符号  
  137.         public void mouseClicked(MouseEvent e) {  
  138.             num1 = input.getText().trim();input.setText("");  
  139.             operator = ((JButton)e.getSource()).getText().trim();  
  140.         }  
  141.         public void mouseEntered(MouseEvent e) {}  
  142.         public void mouseExited(MouseEvent e) {}  
  143.         public void mousePressed(MouseEvent e) {}  
  144.         public void mouseReleased(MouseEvent e) {}    
  145.     }  
  146.       
  147.     private class OperationMouseListener implements MouseListener{  
  148.         public void mouseClicked(MouseEvent e) {  
  149.             if(e.getSource() == backspace){//退格键,删除一个直到没有字符删除  
  150.                 String inputText = input.getText();  
  151.                 if(inputText.length() > 0){  
  152.                     input.setText(inputText.substring(0, inputText.length() - 1));  
  153.                 }  
  154.             }else if(e.getSource() == C){  
  155.                 input.setText("0");//C,清空所有运算数字和符号  
  156.                 num1 = "";  
  157.             }else if(e.getSource() == CE){  
  158.                 input.setText("0");//CE-->将文本框置为0  
  159.             }else if(e.getSource() == decimal){  
  160.                 String text = input.getText().trim();  
  161.                 //如果按了小数点,如果文本框已经有小数点,不做任何操作,否则在结果后面加上小数点  
  162.                 if(text.indexOf(".") == -1){  
  163.                     input.setText(text.concat("."));  
  164.                 }  
  165.             }else if(e.getSource() == equal){  
  166.                 //如果是等号  
  167.                 if(!operator.trim().equals("")){  
  168.                     if(!input.getText().trim().equals("")){  
  169.                         double result = 0D;  
  170.                         if(operator.equals("+")){//执行加法运算  
  171.                             result = Double.parseDouble(num1) + Double.parseDouble(input.getText().trim());  
  172.                         }else if(operator.equals("-")){//减法运算  
  173.                             result = Double.parseDouble(num1) - Double.parseDouble(input.getText().trim());  
  174.                         }else if(operator.equals("*")){//乘法运算  
  175.                             result = Double.parseDouble(num1) * Double.parseDouble(input.getText().trim());  
  176.                         }else if(operator.equals("/")){//除法运算  
  177.                             result = Double.parseDouble(num1) / Double.parseDouble(input.getText().trim());  
  178.                         }  
  179.                            
  180.                          //格式化终结果,保留两位小数点  
  181.                         input.setText(new DecimalFormat("0.00").format(result));  
  182.                     }  
  183.                 }  
  184.                   
  185.             }  
  186.               
  187.         }  
  188.         public void mouseEntered(MouseEvent e) {}  
  189.         public void mouseExited(MouseEvent e) {}  
  190.         public void mousePressed(MouseEvent e) {}  
  191.         public void mouseReleased(MouseEvent e) {}    
  192.     }  
  193.       
  194. }  

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!