Вот пример простого калькулятора с использованием 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. Он включает методы для обработки нажатий кнопок, выполнения арифметических операций и обновления отображения.
Вот методы, используемые в коде:
Calculator()– метод конструктора, который настраивает рамку калькулятора, кнопки и текстовое поле.main(String[] args)– точка входа программы, которая создает экземпляр классаCalculator.actionPerformed(ActionEvent e)– метод, который обрабатывает нажатия кнопок и выполняет действия в зависимости от нажатой кнопки.