java计算器的是实现

来源:互联网 发布:java重载定义 编辑:程序博客网 时间:2024/06/10 23:44

package calculator;

import java.awt.EventQueue;

public class Calculator {
 
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable(){

      @Override
      public void run() {
        CalculatorFrame frame = new CalculatorFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
      }
     
    });
  }

}

 

 

package calculator;

import javax.swing.JFrame;

public class CalculatorFrame extends JFrame {
 
  public CalculatorFrame(){
    setTitle("Calculator");
    CalculatorPanel panel = new CalculatorPanel();
    add(panel);
    pack();
  }

}

package calculator;

import java.awt.BorderLayout;

public class CalculatorPanel extends JPanel{
 
  /**
   *
   */
  private static final long serialVersionUID = 1L;
  private JButton display;
  private JPanel panel;
  private double result;
  private String lastCommand;
  private boolean start;
 
  public CalculatorPanel(){
    setLayout(new BorderLayout());
    result = 0;
    lastCommand = "";
    start = true;
   
    display = new JButton("0");
    display.setEnabled(false);
    add(display,BorderLayout.NORTH);
   
    ActionListener insert = new InsertAction();
    ActionListener command = new CommandAction();
   
    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);
   
  }
  private void addButton(String label,ActionListener listener){
    JButton button = new JButton(label);
    button.addActionListener(listener);
    panel.add(button);
  }

  private class InsertAction implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent event) {
      String input = event.getActionCommand();
      if(start){
        display.setText("");
        start = false;
      }
      display.setText(display.getText()+input);
    }
  }
 
  private class CommandAction implements ActionListener{

    @Override
    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;
      }
    }
    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);
    }
  }
 
}

 

0 0
原创粉丝点击