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

📄 calculator.java

📁 哈工大实验课源代码
💻 JAVA
字号:
import java.awt.*;
 import java.text.DecimalFormat;
 import java.awt.event.*;
 import javax.swing.*;
 import java.awt.geom.*;
 public class Calculator extends JFrame
 {
     private Container container;
  private GridBagLayout layout;
  private GridBagConstraints constraints;
  private JTextField displayField;//计算结果显示区
  DecimalFormat df; //设置数据输出精度
  private String lastCommand;//保存+,-,*,/,=命令
  private double result;//保存计算结果
  private boolean start;//判断是否为数字的开始
     private KeyTest newkeylistener=new KeyTest();
    
     public Calculator()
  {
   super("Calculator");
   setTitle("计算器");
   container=getContentPane();
   layout=new GridBagLayout();
   container.setLayout(layout);
   constraints=new GridBagConstraints();
   start=true;
   result=0;
   df = new DecimalFormat("0.##############"); //设置数据输出精度(对于double型值)
   lastCommand = "=";
   displayField=new JTextField(0);
   displayField.setHorizontalAlignment(JTextField.RIGHT);
   displayField.setEditable(false);
   displayField.addKeyListener(newkeylistener);
   constraints.gridx=0;
   constraints.gridy=0;
   constraints.gridwidth=4;
   constraints.gridheight=1;
   constraints.fill=GridBagConstraints.BOTH;
   constraints.weightx=100;
   constraints.weighty=100;
   layout.setConstraints(displayField,constraints);
   container.add(displayField);
   ActionListener insert = new InsertAction();
   ActionListener command = new CommandAction();
 
   addButton("C",0,1,1,1,insert);
   addButton("7",0,2,1,1,insert);
   addButton("8",1,2,1,1,insert);
   addButton("9",2,2,1,1,insert);
   addButton("/",1,1,1,1,command);
   addButton("4",0,3,1,1,insert);
   addButton("5",1,3,1,1,insert);
   addButton("6",2,3,1,1,insert);
   addButton("*",2,1,1,1,command);
   addButton("1",0,4,1,1,insert);
   addButton("2",1,4,1,1,insert);
   addButton("3",2,4,1,1,insert);
   addButton("-",3,1,1,1,command);
   addButton("0",0,5,2,1,insert);
   addButton(".",2,5,1,1,insert);
   addButton("+",3,2,1,2,command);
   addButton("=",3,4,1,2,command);
   setSize(250,300);
   setVisible(true);
  }
  private void addButton(String label,int row,int column,int with,int height,ActionListener listener)
  {
   JButton button=new JButton(label);
   constraints.gridx=row;
   constraints.gridy=column;
   constraints.gridwidth=with;
   constraints.gridheight=height;
   constraints.fill=GridBagConstraints.BOTH;
   container.add(button);
   button.addActionListener(listener);
   button.addKeyListener(newkeylistener);
   layout.setConstraints(button,constraints);
  } 
  private class InsertAction implements ActionListener
  {
   public void actionPerformed(ActionEvent event)
 
   {
    String input=event.getActionCommand();
    if (start)
    {
     displayField.setText("");
     start=false;
    }
    if (input.equals("C"))
    {
     displayField.setText("0");
 
     start=true;
    }
    else
     displayField.setText(displayField.getText()+input);
 
   }
  }
  private class CommandAction implements ActionListener
  {
   public void actionPerformed(ActionEvent evt)
   {
    String command=evt.getActionCommand();
    if (start)
    {
     lastCommand=command;
    }
    else
    {
     calculate(Double.parseDouble(displayField.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;
   displayField.setText(""+ df.format(result));
  }
  private class KeyTest extends KeyAdapter implements KeyListener
  {
   public void keyTyped(KeyEvent e)
   {
    char c=e.getKeyChar();//use c to store the key pressed
    if (c<='9'&&c>='0'||c=='.')
    {
     if (start)
     {
      displayField.setText("");
      start=false;//boolean start
     }
     displayField.setText(displayField.getText()+c);//JButton displayField 
    }
    else
    {
     if (start)
     {
      if (c=='-')
      {
       lastCommand="-";
       start=true;
      }
      if (c=='c')
      {
       displayField.setText("0");
       result=0;
       start=true;
      }
      if (c=='+')
      {
       lastCommand="+";
       start=true;
         }
         if (c=='*')
         {
          lastCommand="*";
          start=true;
         }
         if (c=='/')
         {
          lastCommand="/";
          start=true;
         }
     }
     else
     {
      calculate(Double.parseDouble(displayField.getText()));
      lastCommand=""+c;
      start=true; 
     } 
    }
   }
  }
  public static void main(String []args)
  {
   Calculator calculator=new Calculator();
   calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
  
}

⌨️ 快捷键说明

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