java 计算器

 

Code:
  1. import java.awt.*;  
  2. import java.awt.event.*;  
  3. import java.text.DecimalFormat;  
  4.   
  5. import javax.swing.*;  
  6.   
  7. public class Calculator5 extends JFrame implements ActionListener  
  8. {  
  9.     /** 
  10.      *  
  11.      */  
  12.     private static final long serialVersionUID = 1L;  
  13.     //private JTextArea text_area;  
  14.     JButton but[],enter;  
  15.     public enum MyOperator{ADD, SUB, MUL, DIV}  
  16.     private MyOperator oper;  
  17.     private JTextField text_area;  
  18.     private double result, last;  
  19.     private HelpDialog viewdialog, helpdialog;  
  20.     private int flag, enterflag;  
  21.     public Calculator5()  
  22.     {  
  23.         super("Calculator5");  
  24.         this.setResizable(false);  
  25.         this.setBounds(300240240340);  
  26.         this.setDefaultCloseOperation(3);  
  27.         text_area = new JTextField("0");  
  28.         text_area.setEditable(false);  
  29.           
  30.           
  31.         Dimension mini_size  = new Dimension(1000,40);  
  32.         text_area.setPreferredSize(mini_size);  
  33.         System.out.println("tr"+text_area.getSize().width+"tr"+text_area.getHeight());  
  34.            
  35.         text_area.setFont(new Font("Consolas"025));//"Default", Font.bold, 20  
  36.         text_area.setHorizontalAlignment(JTextField.RIGHT);  
  37.         this.getContentPane().add(text_area, BorderLayout.NORTH);  
  38.               
  39.         JPanel jpanel = new JPanel();  
  40.           
  41.         jpanel.setLayout(new FlowLayout(FlowLayout.CENTER,5,7));  
  42.           
  43.         this.getContentPane().add(jpanel);  
  44.   
  45.         String b[] = {"√""+/-""C""+""7""8""9""-""4""5""6",  
  46.                    //  0     1     2    3    4    5    6    7    8    9    10     
  47.                 "*""1""2""3""/""0""."};   
  48.                //11   12   13  14    15   16  17     
  49.         but = new JButton[b.length];  
  50.           
  51.         for(int i = 0; i<b.length; i++)  
  52.         {  
  53.             but[i] = new JButton(b[i]);   
  54.             Dimension same_size  = new Dimension(50,40);  
  55.             but[i].setPreferredSize(same_size);  
  56.             but[i].addActionListener(this);  
  57.             jpanel.add(but[i]);  
  58.         }  
  59.         enter= new JButton("=");  
  60.         Dimension same_size  = new Dimension(106,40);  
  61.         enter.setPreferredSize(same_size);  
  62.         enter.addActionListener(this);  
  63.         jpanel.add(enter);  
  64.           
  65.         addmiiMenu();  
  66.           
  67.         this.setVisible(true);  
  68.         helpdialog = new HelpDialog(this"关于产品"320150);  
  69.         viewdialog = new HelpDialog(this"使用说明"320300);  
  70.     }  
  71.     public void addmiiMenu()  
  72.     {  
  73.         JMenuBar menubar = new JMenuBar();  
  74.         this.setJMenuBar(menubar);  
  75.           
  76.         String menustr[] = {"查看""文件""帮助(F1)"};   
  77.         JMenu menu[] = new JMenu[menustr.length];  
  78.         for(int i = 0; i<menustr.length; i++)  
  79.         {  
  80.             menu[i] = new JMenu(menustr[i]);  
  81.             menubar.add(menu[i]);  
  82.         }  
  83.         JMenuItem menu_help_view = new JMenuItem("查看帮助  ");  
  84.         menu_help_view.addActionListener(this);  
  85.         menu_help_view.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, InputEvent.CTRL_MASK));  
  86.         JMenuItem menu_help_about = new JMenuItem("关于计算器");  
  87.         menu_help_about.addActionListener(this);  
  88.         menu[2].add(menu_help_view);  
  89.         menu[2].addSeparator();   
  90.         menu[2].add(menu_help_about);  
  91.         menu[2].setMnemonic(KeyEvent.VK_F1);  
  92.           
  93.     }  
  94.     public static void main(String args[])  
  95.     {  
  96.         new Calculator5();  
  97.     }  
  98.     private class HelpDialog extends JDialog  
  99.     {  
  100.         /** 
  101.          *  
  102.          */  
  103.         private static final long serialVersionUID = 1L;  
  104.         JFrame jframe;  
  105.         JTextArea jtexr;  
  106.         HelpDialog(JFrame jframe, String st, int wid, int hig)  
  107.         {  
  108.             super(jframe,st,true);  
  109.             this.jframe=jframe;                //  
  110.             this.setSize(wid,hig);  
  111.             jtexr = new JTextArea("");  
  112.             jtexr.setEditable(false);  
  113.             jtexr.setFont(new Font("仿宋"115));  
  114.             jtexr.setLineWrap(true);  
  115.             //jtexr.setEnabled(false);  
  116.             this.getContentPane().add(jtexr);  
  117.             this.setDefaultCloseOperation(HIDE_ON_CLOSE);             
  118.         }  
  119.         void show (String message)  
  120.         {  
  121.             jtexr.setText(message);  
  122.             this.setLocation(jframe.getX()+100,jframe.getY()+100);  
  123.             this.setVisible(true);  
  124.         }  
  125.     }  
  126.     @Override  
  127.       
  128.     public void actionPerformed(ActionEvent e) {  
  129.         // TODO Auto-generated method stub  
  130.           
  131.         DecimalFormat df = new DecimalFormat("#########.#########");  
  132.         if(e.getSource()instanceof JMenuItem)                    //MenuItem  
  133.         {  
  134.             if(e.getActionCommand()=="查看帮助  ")  
  135.                 viewdialog.show("可以使用计算器进行如加、减、乘、除这样简单的运算。" +  
  136.                         "/n/n" +  
  137.                         "单击“查看”菜单,然后单击所需模式。" +  
  138.                         "/n/n" +  
  139.                         "切换模式时,将清除当前的计算。但会保留“记忆钥匙”所存储的计算历史记录和数字。" +  
  140.                         "/n/n" +  
  141.                         "单击计算器键进行所需的计算");  
  142.             if(e.getActionCommand()=="关于计算器")  
  143.                 helpdialog.show("/n/n    All rights reserved by " +  
  144.                         "/n       Mr Baoning Gai" +  
  145.                         "/n         11/16/2010");         
  146.         }  
  147.         if(e.getSource()instanceof JButton)  
  148.         {  
  149.               
  150.             if(e.getSource()==but[4])  
  151.             {  
  152.                 Addnumber(7);  
  153.             }  
  154.             if(e.getSource()==but[5])  
  155.             {     
  156.                 Addnumber(8);  
  157.             }  
  158.             if(e.getSource()==but[6])  
  159.             {         
  160.                 Addnumber(9);  
  161.             }  
  162.             if(e.getSource()==but[8])  
  163.             {     
  164.                 Addnumber(4);  
  165.             }  
  166.             if(e.getSource()==but[9])  
  167.             {     
  168.                 Addnumber(5);  
  169.             }  
  170.             if(e.getSource()==but[10])  
  171.             {     
  172.                 Addnumber(6);  
  173.             }  
  174.             if(e.getSource()==but[12])  
  175.             {         
  176.                 Addnumber(1);  
  177.             }  
  178.             if(e.getSource()==but[13])  
  179.             {         
  180.                 Addnumber(2);  
  181.             }  
  182.             if(e.getSource()==but[14])  
  183.             {     
  184.                 Addnumber(3);  
  185.             }  
  186.             if(e.getSource()==but[16])  
  187.             {         
  188.                 Addnumber(0);  
  189.             }  
  190.             if(e.getSource()==but[17])                     //not complement  
  191.             {  
  192.                 try  
  193.                 {  
  194.                     Integer.parseInt(text_area.getText());  
  195.                     flag = 1;  
  196.                 }  
  197.                 catch(NumberFormatException nfe)  
  198.                 {  
  199.                     System.out.println("!");  
  200.                 }  
  201.                 finally{}     
  202.             }  
  203.             if(e.getSource()==but[3])                     //not complement  
  204.             {  
  205.                 enterflag = 0;   
  206.                 oper = MyOperator.ADD;  
  207.                 result = Double.parseDouble( text_area.getText() );  
  208.                 text_area.setText("0");  
  209.             }  
  210.             if(e.getSource()==but[7])                     //not complement  
  211.             {  
  212.                 enterflag = 0;   
  213.                 oper = MyOperator.SUB;  
  214.                 result = Double.parseDouble( text_area.getText() );  
  215.                 text_area.setText("0");  
  216.             }  
  217.             if(e.getSource()==but[11])                     //not complement  
  218.             {  
  219.                 enterflag = 0;   
  220.                 oper = MyOperator.MUL;  
  221.                 result = Double.parseDouble( text_area.getText() );  
  222.                 text_area.setText("0");  
  223.             }  
  224.             if(e.getSource()==but[15])                     //not complement  
  225.             {  
  226.                 enterflag = 0;   
  227.                 oper = MyOperator.DIV;  
  228.                 result = Double.parseDouble( text_area.getText() );  
  229.                 text_area.setText("0");  
  230.             }  
  231.             if(e.getSource()==but[0])                     //求根  
  232.             {  
  233.                 double a = Double.parseDouble( text_area.getText() );  
  234.                 a = Math.sqrt(a);  
  235.                 String str = "" + df.format(a);  
  236.                 text_area.setText(str);  
  237.                 result = Double.parseDouble( text_area.getText() );  
  238.                 enterflag = 1;  
  239.             }  
  240.             if(e.getSource()==but[1])                     //not complement  
  241.             {  
  242.                 double a = Double.parseDouble( text_area.getText() );  
  243.                 a = 0 - a;  
  244.                 String str = "" + df.format(a);  
  245.                 text_area.setText(str);  
  246.                 result = Double.parseDouble( text_area.getText() );  
  247.             }  
  248.             if(e.getSource()==but[2])                     //not complement  
  249.             {  
  250.                 text_area.setText("0");  
  251.                 oper = null;  
  252.                 result = 0;  
  253.                 enterflag = 0;   
  254.             }  
  255.             if(e.getSource()==enter&&oper!=null)                     // complement  
  256.             {  
  257.                 Operate();  
  258.                 enterflag = 1;  
  259.             }  
  260.             System.out.print(" result="+result);//NOY  
  261.             System.out.print(" last="+last);//NOY  
  262.             System.out.print(" flag="+flag);//NOY  
  263.             System.out.print(" enterflag="+enterflag);//NOYenterflag  
  264.             System.out.println(oper);         //NOY  
  265.         }  
  266.     }  
  267.     public void Addnumber(int getnumber)  
  268.     {  
  269.         DecimalFormat df = new DecimalFormat("#########.#########");  
  270.         String str;  
  271.         if(enterflag==1)  
  272.         {  
  273.             str = "0";  
  274.             enterflag = 0;  
  275.             oper = null;  
  276.         }  
  277.         else  
  278.         {  
  279.             str = text_area.getText();  
  280.         }  
  281.         if(flag==1)  
  282.         {  
  283.             str += ".";  
  284.             flag = 0;  
  285.         }  
  286.             str =str+getnumber;  
  287.     double input = Double.parseDouble( str );  
  288.     str = "" + df.format(input);  
  289.     last = input;  
  290.     text_area.setText(str);  
  291.     System.out.println(input);  
  292.     System.out.println(str);  
  293.     }  
  294.     public void Operate()  
  295.     {  
  296.         DecimalFormat df = new DecimalFormat("#########.#########");  
  297.         System.out.println("clik enter");//NOY  
  298.           double b = last;  
  299.           double a = result;  
  300.             switch(oper)  
  301.             {  
  302.             case ADD :a = a+b; break;  
  303.             case SUB :a = a-b; break;  
  304.             case MUL :a = a*b; break;  
  305.             case DIV :a = a/b; break;         
  306.             }  
  307.             result = a;  
  308.             String str = "" + df.format(result);  
  309.             text_area.setText(str);  
  310.     }  
  311. }  

 

你可能感兴趣的:(java 计算器)