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

📄 cal.java

📁 哈工大实验课源代码
💻 JAVA
字号:
 import java.awt.*;
 import java.text.DecimalFormat;
 import java.awt.event.*;
 import javax.swing.*;
 import java.awt.geom.*;
 public class Cal extends JApplet
 {
  public void init()
  {
   CalPanel panel=new CalPanel();
   add(panel);
  }
 
  public static void main(String[] args)
  {
   CalFrame frame = new CalFrame();
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.setVisible(true);
  }
 }
 class CalFrame extends JFrame
 {
  public CalFrame()
  {
   setTitle("Cal");
   CalPanel panel=new CalPanel();
   add(panel);
   pack();
  }
 }
 class CalPanel extends Panel
 {
  private JTextField displayField;
  private JPanel panel;
  private String lastCommand;//保存+,-,*,/,=命令
  private double result;//保存计算结果
  private boolean start;//判断是否为数字的开始
  private DecimalFormat df;
  private KeyTest newkeylistener=new KeyTest();
  public CalPanel()
  {
   setLayout(new BorderLayout());
   
   result=0;
   lastCommand="=";
   start=true;
   df = new DecimalFormat("0.##############");
   
   displayField=new JTextField(0);
   displayField.setHorizontalAlignment(JTextField.RIGHT);
   displayField.setEditable(false);
   displayField.addKeyListener(newkeylistener);
   add(displayField,BorderLayout.NORTH);
     
   ActionListener insert = new InsertAction();
   ActionListener command = new CommandAction();
   
   panel=new JPanel();
   panel.setLayout(new GridLayout(4,4));
   
   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);
   
   add(panel,BorderLayout.CENTER);
   
  }
  private void addButton(String label,ActionListener listener)
  {
   JButton button=new JButton(label);
   button.addActionListener(listener);
   button.addKeyListener(newkeylistener);
   panel.add(button);
  }
  private class InsertAction implements ActionListener
  {
   public void actionPerformed(ActionEvent event)
 
   {
    String input=event.getActionCommand();
    if (start)
    {
     displayField.setText("");
     start=false;
    }
    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=='+')
      {
       lastCommand="+";
       start=true;
         }
         if (c=='*')
         {
          lastCommand="*";
          start=true;
         }
         if (c=='/')
         {
          lastCommand="/";
          start=true;
         }
     }
     else
     {
      calculate(Double.parseDouble(displayField.getText()));
      lastCommand=""+c;
      start=true; 
     } 
    }
   }
  }
 }

⌨️ 快捷键说明

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