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

📄 calculator.java

📁 用Java的swing用户界面组件实现的简单计算器功能
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculator
{
   public static void main(String[] args)
   {
    EventQueue.invokeLater(new Runnable()
      {
        public void run()
        {
           CalculatorFrame frame=new CalculatorFrame();
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           frame.setVisible(true);
        }
      });
    }
}

/**
*A frame with a calculator panel.
*/
class CalculatorFrame extends JFrame
{
  public CalculatorFrame()
  {
   setTitle("Calculator");
   CalculatorPanel panel=new CalculatorPanel();
   add(panel);
   pack(); 
  }
} 

/**
*A panel with claculator buttons and a result display.
*/
class CalculatorPanel extends JPanel
{
  public CalculatorPanel()
  {
  setLayout(new BorderLayout());
   
  result=0;
  lastCommand="=";
  start=true;
   
  //add the display
  
  display=new JButton("0");
  display.setEnabled(false);
  add(display,BorderLayout.NORTH);
  
  ActionListener insert=new InsertAction();
  ActionListener command=new CommandAction();
  
  //add the buttons in a 4*4 grid
  
  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);
}

/**
*Add a button to the center panel.
*@param label the button label
*@param listener the button listener
*/
private void addButton(String lable,ActionListener listener)
{
  JButton button=new JButton(lable);
  button.addActionListener(listener);
  panel.add(button);
}

/**
*This action inserts the button action sring to the end of the display text.
*/
private class InsertAction implements ActionListener
{
  public void actionPerformed(ActionEvent event)
  {
    String input=event.getActionCommand();
    if(start)
    {
      display.setText("");
      start=false;
    }
    display.setText(display.getText()+input);
  }
}

/**
*This actionexecutes the command that the command that button action string denotes.
*/
private class CommandAction implements ActionListener
{
  public void actionPerformed(ActionEvent event)
  {
   String command=event.getActionCommand();
   
   if(start)
   {
     if(command.equals("-"))
     {
      display.setText(command);
      start=false;
      }
      else lastCommand=command;
   }
   else
   {
    calculate(Double.parseDouble(display.getText()));
    lastCommand=command;
    start=true;
   }
  }
}

/**
*Carries out the pending calculation.
*@param x the value to be accumulated with the prior result.
*/
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;
  display.setText(""+result);
 } 
  
  private JButton display;
  private JPanel panel;
  private double result;
  private String lastCommand;
  private boolean start;
  
  
  
  
  }

⌨️ 快捷键说明

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