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

📄 calculation.java

📁 window 美化版的计算器
💻 JAVA
字号:
                      //java计算器(boboojf)
import java.awt.Cursor;
import java.awt.*;
import javax.swing.*;
import java.awt.Image;
import java.awt.event.*;
class calculation extends JFrame
{
 public calculation()     /*构造方法*/
 {
    super("Java计数器");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLocation(500,350);setSize(365,233);
    initTextPanel();    /*文本框*/
    initControlPanel(); /*控制键*/
    initKeyPanel();     /*数字和运算符*/
    Container pane=getContentPane();
    pane.setLayout(new BorderLayout());
    pane.add(TextPanel,BorderLayout.NORTH);
    pane.add(ControlPanel,BorderLayout.CENTER);
    pane.add(KeyPanel,BorderLayout.SOUTH);
    setResizable(false);
    this.show();
 }
 private void initTextPanel()  /*设置文本框*/
 {
    TextPanel=new JPanel();
    JLabel labelimage = new JLabel("", icon, SwingConstants.CENTER);
    labelimage.setVerticalTextPosition(JLabel.BOTTOM);
    //labelimage.setBorder(BorderFactory.createLineBorder(Color.black)); //设置标签边框线;
    JLabel label =new JLabel(" boboojf ");
    label.setFont(font3);
    label.setForeground(new Color(255,155,19));
    TextPanel.setLayout(new FlowLayout());
    TextPanel.setBackground(new Color(200,220,230));
    Resultarea =new JTextField("0",20);
    Resultarea.setForeground(Color.red);
    //Resultarea.setCursor(Cursor.getSystemCustomCursor("../cc/mouse.cur"));
    Resultarea.setFont(new Font("宋体",Font.BOLD,18));
    Resultarea.setEditable(false);
    Resultarea.setBackground(Color.white);
    Resultarea.setHorizontalAlignment(JTextField.RIGHT);
    TextPanel.add(labelimage);
    TextPanel.add(label);
    TextPanel.add(Resultarea);
 }
 private void initControlPanel() /*设置控制键*/
 {
  ControlPanel=new JPanel();
  ControlPanel.setLayout(new GridLayout(1,3,5,5));
  ControlPanel.setBackground(new Color(200,220,230));
  JButton b1=new JButton("Backspace");    /*Backspace键*/
  b1.setBackground(new Color(150,150,255));
  b1.setFont(font1);
  b1.setForeground(Color.white);
  b1.addActionListener(new ActionListener()
     {public void actionPerformed(ActionEvent e)
       {String s1=Resultarea.getText();
         int l=s1.length();
         Resultarea.setText(s1.substring(0 ,l-1));
        }
     });
  ControlPanel.add(b1);
  JButton b2=new JButton("CE");   /*CE键*/
  b2.setBackground(new Color(150,255,150));
  b2.setFont(font1);
  b2.setForeground(Color.red);
  b2.addActionListener(new ActionListener()
    {public void actionPerformed(ActionEvent e)
       {Resultarea.setText("0");
        FT=true;
       }
     });
  ControlPanel.add(b2);
  JButton b3=new JButton("C");  /*C键*/
  b3.setBackground(new Color(255,150,150));
  b3.setFont(font1);
  b3.setForeground(Color.darkGray);
  b3.addActionListener(new ActionListener()
     {public void actionPerformed(ActionEvent e)
        {Resultarea.setText("0");
         pnum="";
         operation="";
         FT=true;
        }
     });
  ControlPanel.add(b3);
 }
 private void initKeyPanel()   /*设置数字键和运算符键*/
 {String key[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
  KeyPanel = new JPanel();
  KeyPanel.setBackground(new Color(200,220,230));
  KeyPanel.setLayout(new GridLayout(4,5,2,2));
  for(int i=0;i<20;i++)
  {
    String label = key[i];
    JButton b = new JButton(label);
    b.setActionCommand(key[i]);
    b.setBackground(Color.orange);
    b.setForeground(Color.blue);
    b.setFont(font2);
    KeyPanel.add(b);
    b.addActionListener
     (new ActionListener()  /*无名监听器*/
      {
       public void actionPerformed(ActionEvent e){Key_actionPerformed(e);}
      }
     );
  }
 }
 private void voidPanel()
 {voidPanel.setBackground(new Color(200,220,230));
 }
 public void Key_actionPerformed(ActionEvent e) /*数字键和运算符键无名监听器*/
 {String s=(e.getActionCommand());
  String st=Resultarea.getText();
  if(s.equals("0"))          /*输入数为0*/
            {if(st.equals("0"))
                return;
              else
                {if(!FT)
                   Resultarea.setText(st+"0");
                 else
                   Resultarea.setText("0");
                }
             FT=false;
             return;
            }

         if(s.equals("+/-"))  /*输入数为+/-*/
             {double k=Double.parseDouble(st);
                {
                  if(k!=0)
                  display(-k);
                }
               return;
              }
        if(s.equals("1")||s.equals("2")||s.equals("3")||s.equals("4")||s.equals("5")||s.equals("6")||s.equals("7")||s.equals("8")||s.equals("9")) /*输入1-9*/
                 {if(!FT)
                    Resultarea.setText(st+s);
                  else
                    { Resultarea.setText(s);
                      FT=false;
                    }
                   return;
                  }
        if(s.equals("."))  /*输入小数点*/
            {if(Resultarea.getText().indexOf(".")==-1)  /*不存在小数点*/
               {if(FT)
                   {Resultarea.setText("0.");
                    FT=false;
                   }
                else
                   Resultarea.setText(st+".");
               }
             return;
            }
        FT=true;          /*按下运算符,输入新的数*/
        if(s.equals("="))
        {
          compute(s);
          operation="";
        }
        /*条件嵌套作判断*/
        else  /*二目运算符号*/
        {if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/"))
                {if(operation.equals(""))
                    {pnum=Resultarea.getText();
                       operation=s;
                    }
                  else
                    compute(s); //调用compute()计算方法
                 }
                else   /*一目运算*/
                {double count1=Double.parseDouble(st);
                 double d0=1/count1;
                 double s0=Math.sqrt(count1);
                 if(s.equals("sqrt"))
                 {
                   display(s0);
                 }
                 else
                    {if(s.equals("1/x"))
                       {
                        if(st.equals("0"))
                          {Resultarea.setText("除数不能为0不能为空!!");
                           operation="";
                           pnum="";
                          }
                        else
                          display(d0);     /*求倒数*/
                       }
                     else
                       display(Double.parseDouble(st)/100);  /*输入%,使当前显示的值除于100*/
                    }
                }
        }
 }
 private void compute(String s)
 { if(s.equals("=") & operation.equals(""))
   {return;}
   double data1=Double.parseDouble(pnum);
   double data2=Double.parseDouble(Resultarea.getText());
  /*加减乘除计算(if...else的嵌套判断)*/
   double d1=data1+data2;
   double d2=data1-data2;
   double d3=data1*data2;
   double d4=data1/data2;
  if(operation.equals("+"))
    display(d1);
  else
      {if(operation.equals("-"))
          display(d2);
       else
          {if(operation.equals("*"))
             display(d3);
           else
             if(operation.equals("/"))
               {if(data2==0)
                     {Resultarea.setText("除数不能为0不能为空!!");
                   operation="";
                   pnum="";
                   return;
                     }
                   else
                     display(d4);
               }
          }
      }
  operation="";  /*符号为当前符*/
  pnum=Resultarea.getText();/*运算数为当前文本数*/
 }
 public void display(double result)   /*显示输出方法*/
 {int a=(int)result;
    if(a==result)
       Resultarea.setText(String.valueOf(a));
    else
       Resultarea.setText(String.valueOf(result));
    if(Resultarea.getText().equals("NaN"))
      Resultarea.setText("输入函数无效!!");
 }
  private JPanel TextPanel;   /*文本框棉板*/
  private JTextField Resultarea;  /*文本框*/
  private JPanel ControlPanel;  /*控制键键面板*/
  private JPanel KeyPanel;      /*数字键和运算符键面板*/
  private JPanel voidPanel;
  private Font font1=new Font("Dialog",Font.BOLD,12);  /*控制键字体*/
  private Font font2=new Font("Dialog",Font.BOLD,12); /*数字键和符号键字体*/
  private Font font3=new Font("Dialog",Font.ITALIC+Font.BOLD,18);/* 标签 */
  private String  pnum="";   /*前操作数*/
  private boolean FT=true; /*控制是否是新数*/
  private String operation="";    /*运算符*/
  private static Icon icon=new ImageIcon("../cc/boboo.gif");
  //private static Cursor cur=new Cursor("../cc/mouse.cur");
 public static void main(String[] args)
 {
    new calculation();
 }
}

⌨️ 快捷键说明

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