如何用Java编程创建一个具有图形用户界面的简单计算器,它能够实时显示运算步骤并支持自动运算(即不依赖于等号键)?请提供可以运行的代码
时间: 2024-12-28 07:41:41 浏览: 4
创建一个具有图形用户界面的简单计算器,我们可以使用Swing库来构建界面,JFormattedTextField用于实时显示运算步骤,而ActionListener来处理按键事件。以下是一个基本的例子:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class RealTimeCalculator extends JFrame implements ActionListener {
private JFormattedTextField display;
private JTextField field1, field2;
private JButton buttonAdd, buttonSubtract, buttonMultiply, buttonDivide;
public RealTimeCalculator() {
setTitle("实时计算器");
setSize(300, 250);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建UI组件
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS));
display = new JFormattedTextField(Double.NaN); // 使用NaN初始化,防止显示数字
field1 = new JTextField(10);
field2 = new JTextField(10);
buttonAdd = new JButton("+");
buttonSubtract = new JButton("-");
buttonMultiply = new JButton("*");
buttonDivide = new JButton("/");
buttonAdd.addActionListener(this);
buttonSubtract.addActionListener(this);
buttonMultiply.addActionListener(this);
buttonDivide.addActionListener(this);
// 添加到面板
panel.add(field1);
panel.add(buttonAdd);
panel.add(field2);
panel.add(buttonSubtract);
panel.add(buttonMultiply);
panel.add(buttonDivide);
panel.add(display);
setContentPane(panel);
}
@Override
public void actionPerformed(ActionEvent e) {
String text1 = field1.getText();
String text2 = field2.getText();
if (!text1.isEmpty() && !text2.isEmpty()) {
double num1 = Double.parseDouble(text1);
double num2 = Double.parseDouble(text2);
switch (e.getActionCommand()) {
case "+":
double result = num1 + num2;
display.setValue(result);
break;
case "- num2;
display.setValue(result);
break;
case "*":
result = num1 * num2;
display.setValue(result);
break;
case "/":
if (num2 != 0) {
result = num1 / num2;
display.setValue(result);
} else {
JOptionPane.showMessageDialog(this, "除数不能为零");
}
break;
}
}
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
RealTimeCalculator calculator = new RealTimeCalculator();
calculator.setVisible(true);
});
}
}
```
在这个计算器中,用户可以在两个文本框里输入数字,然后直接点击加、减、乘、除按钮,结果会实时显示在`display`字段上。注意这里没有处理小数点的操作,如果需要,请自行添加。
阅读全文