import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class CalculatorApp extends JFrame {
private final JTextField firstNumberField;
private final JTextField secondNumberField;
private final JTextField resultField;
public CalculatorApp() {
setTitle("پنجره ی من");
setSize(500, 500);
setLocation(400, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
getContentPane().setBackground(new Color(173, 216, 230));
JLabel firstNumberLabel = createLabel("num1", 0, 0);
JLabel secondNumberLabel = createLabel("num2", 0, 50);
JLabel resultLabel = createLabel("num3", 0, 100);
firstNumberField = createTextField(50, 10);
secondNumberField = createTextField(50, 50);
resultField = createTextField(50, 90);
resultField.setEditable(false);
JButton addButton = createButton("+", 450, 10);
JButton subtractButton = createButton("-", 450, 70);
JButton divideButton = createButton("/", 450, 130);
JButton multiplyButton = createButton("*", 450, 190);
addButton.addActionListener(event -> calculate('+'));
subtractButton.addActionListener(event -> calculate('-'));
divideButton.addActionListener(event -> calculate('/'));
multiplyButton.addActionListener(event -> calculate('*'));
add(firstNumberLabel);
add(secondNumberLabel);
add(resultLabel);
add(firstNumberField);
add(secondNumberField);
add(resultField);
add(addButton);
add(subtractButton);
add(divideButton);
add(multiplyButton);
}
private JLabel createLabel(String text, int x, int y) {
JLabel label = new JLabel(text);
label.setBounds(x, y, 50, 30);
label.setForeground(Color.BLACK);
label.setFont(new Font("SansSerif", Font.BOLD, 12));
return label;
}
private JTextField createTextField(int x, int y) {
JTextField textField = new JTextField();
textField.setBounds(x, y, 300, 35);
textField.setBackground(new Color(255, 90, 182));
textField.setForeground(Color.BLACK);
textField.setFont(new Font("SansSerif", Font.BOLD, 23));
return textField;
}
private JButton createButton(String text, int x, int y) {
JButton button = new JButton(text);
button.setBounds(x, y, 45, 45);
button.setBackground(new Color(255, 90, 182));
button.setForeground(Color.BLACK);
button.setFont(new Font("SansSerif", Font.BOLD, 23));
button.setFocusPainted(false);
return button;
}
private void calculate(char operation) {
try {
double firstNumber = Double.parseDouble(firstNumberField.getText());
double secondNumber = Double.parseDouble(secondNumberField.getText());
double result;
switch (operation) {
case '+':
result = firstNumber + secondNumber;
break;
case '-':
result = firstNumber - secondNumber;
break;
case '*':
result = firstNumber * secondNumber;
break;
case '/':
if (secondNumber == 0) {
JOptionPane.showMessageDialog(
this,
"تقسیم بر صفر امکانپذیر نیست",
"خطا",
JOptionPane.ERROR_MESSAGE
);
return;
}
result = firstNumber / secondNumber;
break;
default:
return;
}
resultField.setText(formatResult(result));
} catch (NumberFormatException exception) {
JOptionPane.showMessageDialog(
this,
"لطفاً عدد معتبر وارد کنید",
"خطا",
JOptionPane.ERROR_MESSAGE
);
}
}
private String formatResult(double value) {
if (value == (long) value) {
return String.valueOf((long) value);
}
return String.valueOf(value);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
CalculatorApp calculatorApp = new CalculatorApp();
calculatorApp.setVisible(true);
});
}
}