请用java语言编写一个程序,使其实现出现一个计算器窗口,GUI图形用户界面编程,使这个计算器能够实现简单的加减乘除
时间: 2024-12-08 11:13:24 浏览: 53
在Java中,我们可以使用Swing库来创建图形用户界面(GUI)并实现一个基本的计算器。以下是一个简单的示例,展示了如何使用Swing框架创建一个Calculator窗口:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SimpleCalculator extends JFrame {
private JTextField display;
private JButton[] buttons = new JButton[10]; // 用于存储数字和运算符按钮
public SimpleCalculator() {
setTitle("Simple Calculator");
setSize(300, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建显示结果的文本框
display = new JTextField(20);
display.setEditable(false);
add(display, BorderLayout.NORTH);
// 初始化按钮数组
for (int i = 0; i < 10; i++) {
int index = i + '0';
String buttonText = Character.toString(index);
buttons[i] = createNumberButton(buttonText, index);
}
for (int i = 0; i < 4; i++) {
buttons[i * 4 + 10] = createOperatorButton("+"); // 加法
buttons[i * 4 + 11] = createOperatorButton("-"); // 减法
buttons[i * 4 + 12] = createOperatorButton("*"); // 乘法
buttons[i * 4 + 13] = createOperatorButton("/"); // 除法
}
// 将按钮添加到面板并布局
JPanel buttonPanel = new JPanel();
GridLayout gridLayout = new GridLayout(4, 4, 5, 5);
buttonPanel.setLayout(gridLayout);
for (JButton button : buttons) {
buttonPanel.add(button);
}
add(buttonPanel, BorderLayout.CENTER);
// 设置监听器处理计算事件
for (JButton button : buttons) {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String buttonText = ((JButton) e.getSource()).getText();
if (buttonText.equals("/") && display.getText().equals("0")) {
JOptionPane.showMessageDialog(SimpleCalculator.this,
"Cannot divide by zero!");
} else {
display.setText(display.getText() + buttonText);
}
}
});
}
setVisible(true);
}
private JButton createNumberButton(String buttonText, int number) {
JButton button = new JButton(buttonText);
button.addActionListener(e -> display.setText(display.getText() + number));
return button;
}
private JButton createOperatorButton(String operator) {
JButton button = new JButton(operator);
button.addActionListener(e -> performCalculation());
return button;
}
private void performCalculation() {
String expression = display.getText();
try {
double result = Double.parseDouble(expression);
display.setText(Double.toString(eval(expression)));
} catch (NumberFormatException ex) {
display.setText("Invalid input");
}
}
private double eval(String expression) {
try {
return Math.pow(expression.contains("/") ? 0 : Double.parseDouble(expression), 2); // 示例仅演示平方,实际应用需完善
} catch (Exception ex) {
return 0;
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new SimpleCalculator());
}
}
```
这是一个基础版本的计算器,只实现了加法和平方运算,并处理了除以零的情况。在实际项目中,你需要完善输入验证、运算符优先级等部分。
阅读全文