📅  最后修改于: 2023-12-03 15:02:04.834000             🧑  作者: Mango
本文将介绍一个基于Java Swing编写的简单计算器。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private JPanel panel; // 面板
private JTextField field; // 文本框
private JButton[] buttons; // 按钮
private String[] buttonNames = {"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"};
// 按钮名称
public Calculator() { // 构造函数
setTitle("Calculator");
setSize(400, 300);
setLocationRelativeTo(null); // 窗口居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
panel.setLayout(new GridLayout(4, 4)); // 使用网格布局
field = new JTextField();
add(field, BorderLayout.NORTH); // 添加到窗口上方
buttons = new JButton[buttonNames.length];
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton(buttonNames[i]);
buttons[i].addActionListener(this); // 添加监听器
panel.add(buttons[i]); // 添加到面板
}
add(panel, BorderLayout.CENTER); // 添加到窗口中心
setVisible(true); // 显示窗口
}
public static void main(String[] args) {
new Calculator();
}
@Override
public void actionPerformed(ActionEvent e) { // 监听器
String input = e.getActionCommand(); // 获取按钮文本
switch (input) {
case "=":
String result;
try {
result = String.valueOf(CalculatorUtils.calculate(field.getText())); // 计算结果
} catch (Exception ex) {
result = "Error";
}
field.setText(result);
break;
case "C":
field.setText("");
break;
default:
field.setText(field.getText() + input);
}
}
}
class CalculatorUtils { // 计算工具类
public static double calculate(String input) {
String[] arr = input.split("(?<=[+\\-*/])|(?=[+\\-*/])"); // 拆分字符串
double result = Double.parseDouble(arr[0]);
String operator = "";
for (int i = 1; i < arr.length; i++) {
if (arr[i].matches("[+\\-*/]")) {
operator = arr[i];
} else {
double num = Double.parseDouble(arr[i]);
switch (operator) { // 执行计算
case "+":
result += num;
break;
case "-":
result -= num;
break;
case "*":
result *= num;
break;
case "/":
result /= num;
break;
}
}
}
return result;
}
}
该计算器基于Java Swing实现,支持基本的四则运算。
操作方法:
首先,在构造函数中创建了一个JPanel面板,并使用网格布局管理器将按钮添加到面板中。
使用数组声明了按钮名称,通过循环创建JButton对象,并使用addActionListener()方法添加监听器。
在监听器中,通过getActionCommand()方法获取按钮文本,根据按钮文本执行不同的操作。
计算功能由CalculatorUtils类完成,该类包含一个静态方法calculate(),用于计算表达式的值。
在calculate()方法中,使用正则表达式拆分字符串,然后根据运算符执行相应的计算操作。
最后将计算结果返回。
通过本例,你可以学习到如何使用Java Swing编写简单的GUI程序,并了解到如何使用正则表达式实现计算功能。
当然,本例只是一个简单的计算器,还有很多扩展和优化的空间。如果你感兴趣,可以尝试将该计算器扩展成更复杂的功能。