可视化计算器--改进版--Java可视化

来源:互联网 发布:淘宝卖家首页悬浮红包 编辑:程序博客网 时间:2024/05/11 20:37

 package Works_JavaLesson;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator {

 /**
  * @param Caculator
  * @author CHENJIAN
  */
 public static void main(String[] args) {
  CalculatorFrame frame = new CalculatorFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
 }

}
class CalculatorFrame extends JFrame{
 public CalculatorFrame(){
  setTitle("Calculator");
  
  CalculatorPanel panel = new CalculatorPanel();
  add(panel);
  pack();
 }
}
class CalculatorPanel extends JPanel{
 public CalculatorPanel(){
  setLayout(new BorderLayout());
    
  result = 0;
  display = new JLabel("0", JLabel.RIGHT);
  start = true;
  panel_1 = new JPanel();
  panel_3 = new JPanel();
  lastCommand = "=";
  
  display.setEnabled(true);
  panel_3.add(display);
  add(panel_3, BorderLayout.NORTH);
  
  ActionListener insert = new InsertAction();
  ActionListener command = new CommandAction();
  
  panel_1.setLayout(new GridLayout(5, 4));
  add(panel_1, BorderLayout.CENTER);
  
  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);
  
  addButton("←", insert);
  addButton("+/-", command);
  addButton("=", command);
  addButton("AC", insert);
  
 }
 public void addButton(String btnname, ActionListener listener){
  JButton btn = new JButton(btnname);
  btn.addActionListener(listener);
  panel_1.add(btn);
 }
 private class InsertAction implements ActionListener{
  public void actionPerformed(ActionEvent event){
   String input = event.getActionCommand();
   if(start){
    display.setText(input);
    start = false;
   }
   else if(input.equals("←")){
    String str = display.getText();
    if(str.length() > 0){
     display.setText(str.substring(0, str.length()-1));
    }
    else{
     display.setText("0");
    }
   }
   else if(input.equals("AC")){
    start = true;
    display.setText("0");
    lastCommand = "=";
   }
   else{
    display.setText(display.getText() + input);
   }
  }
 }
 private class CommandAction implements ActionListener{
  public void actionPerformed(ActionEvent event){
   String command = event.getActionCommand();
   if(start){
    if(command.equals("+/-")){
     display.setText("-");
     start = false;
    }
    else{
     lastCommand = command;
    }
   }
   else{
    Calculate(Double.parseDouble(display.getText()));
    lastCommand = command;
    start = true;
   }
  }
 }
 public void Calculate(double d){
  if(lastCommand.equals("+")){
   result += d;
  }
  else if(lastCommand.equals("-")){
   result -= d;
  }
  else if(lastCommand.equals("*")){
   result *= d;
  }
  else if(lastCommand.equals("/")){
   result /= d;
  }
  else if(lastCommand.equals("%")){
   result %= d;
  }
  else if(lastCommand.equals("=")){
   result = d;
  }
  display.setText("" + result);
  
 }
 private double result;
 private JLabel display;
 private boolean start;
 private JPanel panel_1;
 private JPanel panel_3;
 private String lastCommand;
}

 

 

2009-05-28    09:53:09

原创粉丝点击