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


     

  • 相关阅读:
    通过命令行配置samba服务
    新版python logging 封装,支持同时向console,file,socket输出
    python多进程管理DEMO
    注意tornado中的日志操作
    一个简单的python日志服务器
    NoVNC的使用、websockify以及VNC截图
    Oracle——distinct的用法
    C# Excel数据转化为Datatable
    C# winform 无API函数实现系统快捷键
    [转]C# WInForm 无框窗体移动
  • 原文地址:https://www.cnblogs.com/seebro/p/2476548.html
Copyright © 2020-2023  润新知