⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mycalculator.java

📁 java编写的计算器程序,界面简单,和windows的计算器界面相近,供初学者使用
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.LinkedList;
import java.text.NumberFormat;

public class MyCalculator extends JFrame implements ActionListener
{
     Panel panelA;
     Panel panelB;
     JTextField answerwindow;
     JTextField tempwindow;

     LinkedList list;
     boolean equalflag=false;
     LinkedList memorylist;

     NumberButton numberButton[];
     ControlButton control[];
     FunctionButton function[];

     String controlstring[]={"+","-","*","/"};
     String functionstring[]={"BackSpace","CE","C","sqrt","%","1/x","=","MC",
                              "MR","MS","M+","+/-","."};

   public MyCalculator()
   {
      super("CS0311 熊涛的计算器");
      list=new LinkedList();
      memorylist=new LinkedList();
      numberButton=new NumberButton[10];
      control=new ControlButton[4];
      function=new FunctionButton[13];
      for(int i=0;i<10;i++){
         numberButton[i]=new NumberButton(i);
         numberButton[i].addActionListener(this);
      }
      for(int i=0;i<4;i++){
         control[i]=new ControlButton(controlstring[i]);
         control[i].addActionListener(this);
      }
      for(int i=0;i<13;i++){
         function[i]=new FunctionButton(functionstring[i]);
         function[i].addActionListener(this);
      }
      answerwindow=new JTextField("0");
      answerwindow.setHorizontalAlignment(JTextField.RIGHT);
      answerwindow.setForeground(Color.blue);
      answerwindow.setFont(new Font("TimesRoman",Font.PLAIN,14));
      answerwindow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
      answerwindow.setBackground(Color.white); 
      answerwindow.setEditable(false);
      tempwindow=new JTextField("0");
      tempwindow.setHorizontalAlignment(JTextField.RIGHT);
      tempwindow.setForeground(Color.blue);
      tempwindow.setFont(new Font("TimesRoman",Font.PLAIN,14));
      tempwindow.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
      tempwindow.setBackground(Color.cyan); 
      tempwindow.setEditable(false);

      panelA=new Panel();
      panelA.setLayout(new GridLayout(4,6));

      panelA.add(function[7]);
      panelA.add(numberButton[7]);
      panelA.add(numberButton[8]);
      panelA.add(numberButton[9]);
      panelA.add(control[3]);
      panelA.add(function[3]);

      panelA.add(function[8]);
      panelA.add(numberButton[4]);
      panelA.add(numberButton[5]);
      panelA.add(numberButton[6]);
      panelA.add(control[2]);
      panelA.add(function[4]);

      panelA.add(function[9]);
      panelA.add(numberButton[1]);
      panelA.add(numberButton[2]);
      panelA.add(numberButton[3]);
      panelA.add(control[1]);
      panelA.add(function[5]);

      panelA.add(function[10]);
      panelA.add(numberButton[0]);
      panelA.add(function[11]);
      panelA.add(function[12]);
      panelA.add(control[0]);
      panelA.add(function[6]);

      panelB=new Panel();
      panelB.setLayout(new GridLayout(1,3));
      
      panelB.add(function[0]);
      panelB.add(function[1]);
      panelB.add(function[2]);

      add(answerwindow,BorderLayout.NORTH);
      add(tempwindow,BorderLayout.CENTER);
      add(panelB,BorderLayout.EAST);
      add(panelA,BorderLayout.SOUTH);

      addWindowListener(new WindowAdapter()
                    { public void windowClosing(WindowEvent e)
                       {
                         System.exit(0);
                       }
                    });
      setVisible(true);
      setBounds(100,50,480,200);
      setResizable(false);
      validate();
   }

   public void actionPerformed(ActionEvent e){
      if(e.getSource() instanceof NumberButton){
         NumberButton b=(NumberButton)e.getSource();
         if(list.size()==0){
            int number=b.getNumber();
            list.add(""+number);
            answerwindow.setText(""+number);
            equalflag=false;
         }
         else if(list.size()==1 && equalflag==false){
            int number=b.getNumber();
            String num=(String)list.getFirst();
            String s=num.concat(""+number);
            list.set(0,s);
            answerwindow.setText(s);
         }
         else if(list.size()==1 && equalflag==true){
            int number=b.getNumber();
            list.removeFirst();
            list.add(""+number);
            equalflag=false;
            answerwindow.setText(""+number);
         }
         else if(list.size()==2){
            int number=b.getNumber();
            list.add(""+number);
            answerwindow.setText(""+number);
         }
         else if(list.size()==3){
            int number=b.getNumber();
            String num=(String)list.getLast();
            String s=num.concat(""+number);
            list.set(2,s);
            answerwindow.setText(s);
         }
      }

      else if(e.getSource() instanceof ControlButton){
         ControlButton b=(ControlButton)e.getSource();
         if(list.size()==1){
            String con=b.getControl();
            list.add(con);
         }
         else if(list.size()==2){
            String con=b.getControl();
            list.set(1,con);
         }
         else if(list.size()==3){
            String con=b.getControl();
            String number1=(String)list.getFirst();
            String number2=(String)list.getLast();
            String control=(String)list.get(1);
            try{
               double n1=Double.parseDouble(number1);
               double n2=Double.parseDouble(number2);
               double n=0;
               if(control.equals("+")){
                  n=n1+n2;
               }
               else if(control.equals("-")){
                  n=n1-n2;
               }
               else if(control.equals("*")){
                  n=n1*n2;
               }
               else if(control.equals("/")){
                  n=n1/n2;
               }
               list.clear();
               list.add(""+n);
               list.add(con);
               answerwindow.setText(""+n);
            }catch(Exception ee){}
          }
       }

       else if(e.getSource() instanceof FunctionButton){
          FunctionButton b=(FunctionButton)e.getSource();
          if(b.getFunction()=="="){
             equalflag=true;
             if(list.size()==1 || list.size()==2){
                String num=(String)list.getFirst();
                answerwindow.setText(""+num);
             }
             else if(list.size()==3){
                String number1=(String)list.getFirst();
                String number2=(String)list.getLast();
                String control=(String)list.get(1);
                try{
                  double n1=Double.parseDouble(number1);
                  double n2=Double.parseDouble(number2);
                  double n=0;
                  if(control.equals("+")){
                     n=n1+n2;
                  }
                  else if(control.equals("-")){
                     n=n1-n2;
                  }
                  else if(control.equals("*")){
                     n=n1*n2;
                  }
                  else if(control.equals("/")){
                     n=n1/n2;
                  }
                  answerwindow.setText(""+n);
                  list.set(0,""+n);
                  list.removeLast();
                  list.removeLast();
                }catch(Exception ee){}
             }
          }
          else if(b.getFunction()=="."){
             if(list.size()==0){
                equalflag=false;
             }
             else if(list.size()==1){
                String dot=".";
                String num=(String)list.getFirst();
                String s=null;
                if(num.indexOf(dot)==-1){
                   s=num.concat(dot);
                   list.set(0,s);
                }
                else{
                   s=num;
                }
                list.set(0,s);
                answerwindow.setText(s);
             }

⌨️ 快捷键说明

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