21xrx.com
2025-03-24 06:23:46 Monday
文章检索 我的文章 写文章
Java编写计算器界面:从入门到精通
2023-06-17 16:39:41 深夜i     12     0
Java 计算器 界面设计

随着计算机科学的发展,计算器已成为了我们日常生活中必不可少的工具之一。而在编写计算器时,Java是一种常用的语言,具有简单易学、运行速度快等优点。本文将从入门到精通,带领读者一步步学习使用Java编写计算器界面,并提供详细的代码案例。

第一步:创建基本的计算器界面

在Java中,使用Swing类库可以轻松创建图形用户界面(GUI),为计算器提供一个友好的操作界面,需要用到JFrame, JTextField, JButton等组件。下面是一个基本的GUI代码段:

import javax.swing.*;
import java.awt.*;
public class CalculatorGUI extends JFrame {
  private JTextField textField;
  private JButton buttonPlus, buttonMinus, buttonMultiply, buttonDivide;
  public CalculatorGUI() {
    super("Calculator");
    // Create the text field
    textField = new JTextField(10);
    textField.setEditable(false);
    textField.setText("0");
    // Create the buttons
    buttonPlus = new JButton("+");
    buttonMinus = new JButton("-");
    buttonMultiply = new JButton("*");
    buttonDivide = new JButton("/");
    // Create the layout
    JPanel panelTextField = new JPanel(new GridLayout(1, 1));
    JPanel panelButtons = new JPanel(new GridLayout(4, 1));
    panelTextField.add(textField);
    panelButtons.add(buttonPlus);
    panelButtons.add(buttonMinus);
    panelButtons.add(buttonMultiply);
    panelButtons.add(buttonDivide);
    // Add the components to the frame
    setLayout(new BorderLayout());
    add(panelTextField, BorderLayout.NORTH);
    add(panelButtons, BorderLayout.CENTER);
    // Set the frame properties
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);
  }
  public static void main(String[] args) {
    new CalculatorGUI();
  }
}

这段代码创建了一个包括一个文本框和四个按钮的基本GUI界面。我们可以通过单击按钮并将数字键盘上的数字添加到文本框来完成计算器的基本操作。

第二步:添加计算器的功能

要使计算器正常工作,我们需要添加计算器的基本功能,例如添加、减少、乘以和除以等操作。为此,我们需要为每个按钮以及计算功能实现ActionListener接口,并使用JavaScript代码处理实际的计算。

以下是一个包括基本功能的代码段:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorGUI extends JFrame implements ActionListener {
  private JTextField textField;
  private JButton buttonPlus, buttonMinus, buttonMultiply, buttonDivide, buttonClear, buttonEqual;
  private double firstNumber, secondNumber;
  private String operation;
  public CalculatorGUI() {
    super("Calculator");
    // Create the text field
    textField = new JTextField(10);
    textField.setEditable(false);
    textField.setText("0");
    // Create the buttons
    buttonPlus = new JButton("+");
    buttonMinus = new JButton("-");
    buttonMultiply = new JButton("*");
    buttonDivide = new JButton("/");
    buttonClear = new JButton("C");
    buttonEqual = new JButton("=");
    // Create the layout
    JPanel panelTextField = new JPanel(new GridLayout(1, 1));
    JPanel panelButtons = new JPanel(new GridLayout(4, 2));
    panelTextField.add(textField);
    panelButtons.add(buttonClear);
    panelButtons.add(buttonDivide);
    panelButtons.add(buttonMultiply);
    panelButtons.add(buttonMinus);
    panelButtons.add(button7);
    panelButtons.add(button8);
    panelButtons.add(button9);
    panelButtons.add(buttonPlus);
    panelButtons.add(button4);
    panelButtons.add(button5);
    panelButtons.add(button6);
    panelButtons.add(buttonEqual);
    panelButtons.add(button1);
    panelButtons.add(button2);
    panelButtons.add(button3);
    panelButtons.add(button0);
    // Add the components to the frame
    setLayout(new BorderLayout());
    add(panelTextField, BorderLayout.NORTH);
    add(panelButtons, BorderLayout.CENTER);
    // Add action listeners to the buttons
    buttonPlus.addActionListener(this);
    buttonMinus.addActionListener(this);
    buttonMultiply.addActionListener(this);
    buttonDivide.addActionListener(this);
    buttonClear.addActionListener(this);
    buttonEqual.addActionListener(this);
    // Set the frame properties
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    pack();
    setVisible(true);
  }
  public void actionPerformed(ActionEvent e) {
    Object source = e.getSource();
    String buttonText = ((JButton) source).getText();
    // Adding the first number
    if(buttonText.matches("[0-9]")) {
      if(textField.getText().equals("0")) {
        textField.setText("");
      }
      textField.setText(textField.getText() + buttonText);
    }
    // Clearing the text field
    if(buttonText.equals("C")) {
      textField.setText("0");
      firstNumber = 0;
      secondNumber = 0;
      operation = "";
    }
    // Storing the operation
    if(buttonText.matches("[+\\-*/]")) {
      firstNumber = Double.parseDouble(textField.getText());
      operation = buttonText;
      textField.setText("");
    }
    // Calculating the result
    if(buttonText.equals("=")) {
      secondNumber = Double.parseDouble(textField.getText());
      switch(operation) {
        case "+":
          textField.setText(String.valueOf(firstNumber + secondNumber));
          break;
        case "-":
          textField.setText(String.valueOf(firstNumber - secondNumber));
          break;
        case "*":
          textField.setText(String.valueOf(firstNumber * secondNumber));
          break;
        case "/":
          textField.setText(String.valueOf(firstNumber / secondNumber));
          break;
        default:
          break;
      }
    }
  }
  public static void main(String[] args) {
    new CalculatorGUI();
  }
}

这个计算器GUI代码基于第一步的代码,添加了ActionListener和JavaScript代码以实现完整的计算器功能。

  
  

评论区