calculator.java~3~

来自「教材管理系统」· JAVA~3~ 代码 · 共 402 行

JAVA~3~
402
字号
package bookmanager;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.*;import javax.swing.border.*;import java.util.*;public class ComputerPad extends JFrame      implements ActionListener{NumberButton[] numberButton;OperationButton[] operationButton;JButton dotButton,signButton,backspaceButton,   reciprocalButton, equalButton, clearZeroButton;JPanel panel;JTextField resultShow;String operators[] = {"+", "-", "*", "/" };LinkedList String dataList;boolean equalButtonIsPressed = false;public class NumberButton extends JButton{   int number;   public NumberButton(int number){    super("" + number);    this.number = number;    setForeground(Color.blue);    //setFont(new Font("Serif", Font.BOLD,16));   }   public int getNumber(){    return number;   }}public ComputerPad(){   super("计算器");   dataList = new LinkedList<String>();   numberButton = new NumberButton[10];   for(int i = 0; i <= 9; i++){    numberButton[i] = new NumberButton(i);    numberButton[i].addActionListener(this);   }   operationButton = new OperationButton[4];   for(int i = 0;i < 4; i++){    operationButton[i] = new OperationButton(operators[i]);    operationButton[i].addActionListener(this);   }   dotButton = new JButton(".");   signButton = new JButton("+/-");   equalButton = new JButton("=");   reciprocalButton = new JButton("1/x");   backspaceButton = new JButton("退格");   clearZeroButton = new JButton("C");   clearZeroButton.setForeground(Color.red);   backspaceButton.setForeground(Color.red);   reciprocalButton.setForeground(Color.red);   equalButton.setForeground(Color.blue);   signButton.setForeground(Color.blue);   dotButton.setForeground(Color.blue);   clearZeroButton.addActionListener(this);   backspaceButton.addActionListener(this);   reciprocalButton.addActionListener(this);   equalButton.addActionListener(this);   signButton.addActionListener(this);   dotButton.addActionListener(this);   resultShow = new JTextField(10);   resultShow.setHorizontalAlignment(JTextField.RIGHT);   resultShow.setForeground(Color.blue);   resultShow.setFont(new Font("TimesRoman", Font.PLAIN, 14));   resultShow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));   resultShow.setBackground(Color.white);   resultShow.setEditable(false);   panel = new JPanel();   panel.setLayout(new GridLayout(4,5));   //面板中的第一行   panel.add(numberButton[1]);   panel.add(numberButton[2]);   panel.add(numberButton[3]);   panel.add(operationButton[0]);   panel.add(clearZeroButton);   //面板中的第2行   panel.add(numberButton[4]);   panel.add(numberButton[5]);   panel.add(numberButton[6]);   panel.add(operationButton[1]);   panel.add(backspaceButton);   //面板中的第3行   panel.add(numberButton[7]);   panel.add(numberButton[8]);   panel.add(numberButton[9]);   panel.add(operationButton[2]);   panel.add(reciprocalButton);   //面板中的第4行   panel.add(numberButton[0]);   panel.add(signButton);   panel.add(dotButton);   panel.add(operationButton[3]);   panel.add(equalButton);   add(panel, BorderLayout.CENTER);   add(resultShow, BorderLayout.NORTH);   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   setVisible(true);   setBounds(100, 50, 340, 180);   setResizable(false);   validate();}public class OperationButton extends JButton {   String operator;   public OperationButton(String s){    super(s);    operator = s;    setForeground(Color.red);   }   public String getOperator(){    return operator;   }}public void actionPerformed(ActionEvent e) {   //如果按下的是“数字按钮”   if(e.getSource() instanceof NumberButton){    NumberButton b = (NumberButton)e.getSource();    if(dataList.size() == 0){     int number = b.getNumber();     dataList.add("" + number);     resultShow.setText("" + number);     equalButtonIsPressed = false;    }    else if(dataList.size() == 1 && equalButtonIsPressed == false){     int number = b.getNumber();     String num = (String)dataList.getFirst();     String s = num.concat("" + number);     dataList.set(0, s);     resultShow.setText(s);    }    else if(dataList.size() == 1 && equalButtonIsPressed == true){     int number = b.getNumber();     dataList.removeFirst();     dataList.add("" + number);     equalButtonIsPressed = false;     resultShow.setText("" + number);    }    else if(dataList.size() == 2){     int number = b.getNumber();     dataList.add("" + number);     resultShow.setText("" + number);    }else if(dataList.size() == 3){     int number = b.getNumber();     String num = (String)dataList.getLast();     String s = num.concat("" + number);     dataList.set(2, s);     resultShow.setText(s);    }   }   //如果按下的是“各种操作符按钮”   else if(e.getSource() instanceof OperationButton){    OperationButton b = (OperationButton)e.getSource();    if(dataList.size() == 1){     String fuhao = b.getOperator();     dataList.add(fuhao);    }    else if(dataList.size() == 2){     String fuhao = b.getOperator();     dataList.set(1, fuhao);    }    else if(dataList.size() == 3){     String fuhao = b.getOperator();     String number1 = (String)dataList.getFirst();     String number2 = (String)dataList.getLast();     String operator = (String)dataList.get(1);     //try{      double n1 = Double.parseDouble(number1);      double n2 = Double.parseDouble(number2);      double n = 0;      if(operator.equals("+")){       n = n1 + n2;      }      else if(operator.equals("-")){       n = n1 - n2;      }      else if(operator.equals("*")){       n = n1 * n2;      }      else if(operator.equals("/")){       n = n1 / n2;      }      dataList.clear();      dataList.add("" + n);      dataList.add(fuhao);      resultShow.setText("" + n);//     }//     catch(Exception ee){////     }    }   }   //如果按下的是“等号按钮”   else if(e.getSource() == equalButton){    equalButtonIsPressed = true;    if(dataList.size() == 1 || dataList.size() == 2){     String num = (String)dataList.getFirst();     String operator = (String)dataList.get(1);     double n = Double.parseDouble(num);     if(operator.equals("+")){      n = n + n;     }     else if(operator.equals("-")){      n = n - n;     }     else if(operator.equals("*")){      n = n * n;     }     else if(operator.equals("/")){      n = n / n;     }     resultShow.setText("" + n);     dataList.clear();     dataList.add("" + n);    }    else if(dataList.size() == 3){     String number1 = (String)dataList.getFirst();     String number2 = (String)dataList.getLast();     String operator = (String)dataList.get(1);     try{      double n1 = Double.parseDouble(number1);      double n2 = Double.parseDouble(number2);      double n = 0;      if(operator.equals("+")){       n = n1 + n2;      }      else if(operator.equals("-")){       n = n1 - n2;      }      else if(operator.equals("*")){       n = n1 * n2;      }      else if(operator.equals("/")){       n = n1 / n2;      }      resultShow.setText("" + n);      dataList.set(0, "" + n);      dataList.removeLast();      dataList.removeLast();     }     catch(Exception ee){     }    }   }   //如果按下的是“小数点按钮”   else if(e.getSource() == dotButton){    if(dataList.size() == 0){     equalButtonIsPressed = false;    } else {     String label = dotButton.getLabel();     if(dataList.size() == 1){      String dot = label;      String num = (String)dataList.getFirst();      String s = null;      if(num.indexOf(dot) == -1){       s = num.concat(dot);       dataList.set(0, s);      }      else{       s = num;      }      dataList.set(0, s);      resultShow.setText(s);     }     else if(dataList.size() == 3){      String dot = label;      String num = (String)dataList.getLast();      String s = null;      if(num.indexOf(dot) == -1){       s = num.concat(dot);       dataList.set(2, s);      }      else{       s = num;      }      resultShow.setText(s);     }    }   }   //如果按下的是“退格按钮”   else if(e.getSource() == backspaceButton){    if(dataList.size() == 1){     String num = (String)dataList.getFirst();     if(num.length() >= 1){      num = num.substring(0, num.length() - 1);     }    }    else if(dataList.size() == 3){    }   }   //如果按下的是“正负号按钮”   else if(e.getSource() == signButton){    if(dataList.size() == 1){    }    else if(dataList.size() == 3){    }   }   //如果按下的是“倒数按钮”   else if(e.getSource() == reciprocalButton){    if(dataList.size() == 1 || dataList.size() == 2){     String number1 = (String)dataList.getFirst();     try{      double d = Double.parseDouble(number1);      d = 1.0 / d;      String str = String.valueOf(d);      dataList.set(0, str);      resultShow.setText(str);     }     catch(Exception ee){     }    }    else if(dataList.size() == 3){     String number2 = (String)dataList.getLast();     try{      double d = Double.parseDouble(number2);      d = 1.0 / d;      String str = String.valueOf(d);      dataList.set(0, str);      resultShow.setText(str);     }     catch(Exception ee){     }    }   }   //如果按下的是“清零按钮”   else if(e.getSource() == clearZeroButton){    equalButtonIsPressed = false;    resultShow.setText("0");    dataList.clear();   }}public static void main(String[] args){   new ComputerPad();}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?