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;
    }


     

  • 相关阅读:
    51Nod1740 蜂巢迷宫
    51Nod1279 扔盘子
    51Nod1095 Anigram单词
    51Nod1094 和为k的连续区间
    51Nod1072 威佐夫游戏
    PHP 图片处理
    ubuntu 安装 ftp
    linux下ab网站压力测试命令
    iptables FOr linux
    discuz 个性化时间函数
  • 原文地址:https://www.cnblogs.com/seebro/p/2476548.html
Copyright © 2011-2022 走看看