Калькулятор Java JFrame: создание базового калькулятора с использованием JFrame в Java

Вот пример простого калькулятора с использованием JFrame в Java:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator extends JFrame implements ActionListener {
    private JTextField textField;
    private JButton[] numberButtons;
    private JButton[] functionButtons;
    private JButton addButton, subButton, mulButton, divButton;
    private JButton decButton, equButton, delButton, clrButton;
    private JPanel panel;
    private double num1, num2, result;
    private char operator;
    public Calculator() {
        setTitle("Calculator");
        setSize(300, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setLocationRelativeTo(null);
        panel = new JPanel();
        panel.setLayout(new GridLayout(5, 4));
        textField = new JTextField();
        textField.setFont(new Font("Arial", Font.BOLD, 16));
        textField.setEditable(false);
        numberButtons = new JButton[10];
        for (int i = 0; i < 10; i++) {
            numberButtons[i] = new JButton(String.valueOf(i));
            numberButtons[i].setFont(new Font("Arial", Font.BOLD, 16));
            numberButtons[i].addActionListener(this);
        }
        functionButtons = new JButton[8];
        addButton = new JButton("+");
        subButton = new JButton("-");
        mulButton = new JButton("*");
        divButton = new JButton("/");
        decButton = new JButton(".");
        equButton = new JButton("=");
        delButton = new JButton("Delete");
        clrButton = new JButton("Clear");
        functionButtons[0] = addButton;
        functionButtons[1] = subButton;
        functionButtons[2] = mulButton;
        functionButtons[3] = divButton;
        functionButtons[4] = decButton;
        functionButtons[5] = equButton;
        functionButtons[6] = delButton;
        functionButtons[7] = clrButton;
        for (int i = 0; i < 8; i++) {
            functionButtons[i].setFont(new Font("Arial", Font.BOLD, 16));
            functionButtons[i].addActionListener(this);
        }
        panel.add(textField);
        panel.add(delButton);
        panel.add(clrButton);
        for (int i = 7; i >= 0; i--) {
            panel.add(functionButtons[i]);
        }
        panel.add(numberButtons[0]);
        for (int i = 1; i <= 3; i++) {
            panel.add(numberButtons[i]);
        }
        panel.add(functionButtons[4]);
        for (int i = 4; i <= 6; i++) {
            panel.add(numberButtons[i]);
        }
        panel.add(functionButtons[5]);
        panel.add(numberButtons[9]);
        panel.add(numberButtons[8]);
        panel.add(numberButtons[7]);
        panel.add(functionButtons[6]);
        add(panel);
        setVisible(true);
    }
    public static void main(String[] args) {
        new Calculator();
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        for (int i = 0; i < 10; i++) {
            if (e.getSource() == numberButtons[i]) {
                textField.setText(textField.getText().concat(String.valueOf(i)));
            }
        }
        if (e.getSource() == decButton) {
            textField.setText(textField.getText().concat("."));
        }
        if (e.getSource() == addButton) {
            num1 = Double.parseDouble(textField.getText());
            operator = '+';
            textField.setText("");
        }
        if (e.getSource() == subButton) {
            num1 = Double.parseDouble(textField.getText());
            operator = '-';
            textField.setText("");
        }
        if (e.getSource() == mulButton) {
            num1 = Double.parseDouble(textField.getText());
            operator = '*';
            textField.setText("");
        }
        if (e.getSource() == divButton) {
            num1 = Double.parseDouble(textField.getText());
            operator = '/';
            textField.setText("");
        }
        if (e.getSource() == equButton) {
            num2 = Double.parseDouble(textField.getText());
            switch (operator) {
                case '+':
                    result = num1 + num2;
                    break;
                case '-':
                    result = num1 - num2;
                    break;
                case '*':
                    result = num1 * num2;
                    break;
                case '/':
                    result = num1 / num2;
                    break;
            }
            textField.setText(String.valueOf(result));
        }
        if (e.getSource() == clrButton) {
            textField.setText("");
        }
        if (e.getSource() == delButton) {
            String currentText = textField.getText();
            if (currentText.length() > 0) {
                textField.setText(currentText.substring(0, currentText.length() - 1));
            }
        }
    }
}

Этот код создает базовый калькулятор с использованием JFrame. Он включает методы для обработки нажатий кнопок, выполнения арифметических операций и обновления отображения.

Вот методы, используемые в коде:

  1. Calculator()– метод конструктора, который настраивает рамку калькулятора, кнопки и текстовое поле.
  2. main(String[] args)– точка входа программы, которая создает экземпляр класса Calculator.
  3. actionPerformed(ActionEvent e)– метод, который обрабатывает нажатия кнопок и выполняет действия в зависимости от нажатой кнопки.