zoukankan      html  css  js  c++  java
  • CACULATOR

     

    /**
       @version 1.0
       @author Katongmao Lee o(∩_∩)o
    */

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;

    public class Calculator1
    {
       public static void main(String[] args)
       { 
          CalculatorFrame frame = new CalculatorFrame();
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.show();
          frame.setVisible(true);
       }
    }

    /**
       A frame with a calculator panel.
    */
    class CalculatorFrame extends JFrame
    {
       public CalculatorFrame()
       {
          setTitle("Calculator");
          Container contentpane=getContentPane();
          CalculatorPanel panel = new CalculatorPanel();
          contentpane.add(panel);
          pack();
          /*This part in JDK 1.5 is described just like
           *
           *setTitle("Calculator");
           *CalculatorPanel panel = new CalculatorPanel();
           *add(panel);
           *pack();*/
       }
    }

    /**
       A panel with calculator buttons and a result display.
    */
    class CalculatorPanel extends JPanel

       public CalculatorPanel()
       { 
          setLayout(new BorderLayout());

          result = 0;
          lastCommand = "=";
          start = true;
         
          // add the display

          display = new JButton("0");
          display.setEnabled(false);
          add(display, BorderLayout.NORTH);
         
          ActionListener insert = new InsertAction();
          ActionListener command = new CommandAction();

          // add the buttons in a 4 x 4 grid

          panel = new JPanel();
          panel.setLayout(new GridLayout(4, 4));

          addButton("7", insert);
          addButton("8", insert);
          addButton("9", insert);
          addButton("/", command);

          addButton("4", insert);
          addButton("5", insert);
          addButton("6", insert);
          addButton("*", command);

          addButton("1", insert);
          addButton("2", insert);
          addButton("3", insert);
          addButton("-", command);

          addButton("0", insert);
          addButton(".", insert);
          addButton("=", command);
          addButton("+", command);

          add(panel, BorderLayout.CENTER);
       }

       /**
          Adds a button to the center panel.
          @param label the button label
          @param listener the button listener
       */
       private void addButton(String label, ActionListener listener)
       { 
          JButton button = new JButton(label);
          button.addActionListener(listener);
          panel.add(button);
       }

       /**
          This action inserts the button action string to the
          end of the display text.
       */
       private class InsertAction implements ActionListener
       {
          public void actionPerformed(ActionEvent event)
          {
             String input = event.getActionCommand();
             if (start)
             {
                display.setText("");
                start = false;
             }
             display.setText(display.getText() + input);
          }
       }

       /**
          This action executes the command that the button
          action string denotes.
       */
       private class CommandAction implements ActionListener
       {
          public void actionPerformed(ActionEvent event)
          { 
             String command = event.getActionCommand();

             if (start)
             { 
                if (command.equals("-"))
                {
                   display.setText(command);
                   start = false;
                }
                else
                   lastCommand = command;
             }
             else
             { 
                calculate(Double.parseDouble(display.getText()));
                lastCommand = command;
                start = true;
             }
          }
       }

       /**
          Carries out the pending calculation.
          @param x the value to be accumulated with the prior result.
       */
       public void calculate(double x)
       {
          if (lastCommand.equals("+")) result += x;
          else if (lastCommand.equals("-")) result -= x;
          else if (lastCommand.equals("*")) result *= x;
          else if (lastCommand.equals("/")) result /= x;
          else if (lastCommand.equals("=")) result = x;
          display.setText("" + result);
       }
      
       private JButton display;
       private JPanel panel;
       private double result;
       private String lastCommand;
       private boolean start;
    }


     

  • 相关阅读:
    51degress.mobi与wurfl项目的对比
    低版本的51degrees.mobi 1.2.0.5 用UserAgent获取手机硬件型号,并升级最新的WURFL硬件包
    RedGate系列工具,开发必备
    VS中代码显示虚竖线,代码格式标记 Indent Guides
    asp.net下CKFinder IE9以下浏览器中上传图片文件时提示“无效文件名或文件夹名称”的解决方法
    让MySoft.Data也能有Discuz!NT的数据库查询分析工具
    恶意访问网站的策略处理,IP访问限制
    【转载】Asp.Net 全生命周期
    如何在解决方案中新建子网站,Discuz项目子网站技术
    博客园电子期刊2009年8月刊发布啦
  • 原文地址:https://www.cnblogs.com/seebro/p/2476548.html
Copyright © 2011-2022 走看看