
以下是一个Java图形界面计算器的案例它展示了如何使用Java Swing库来创建一个简单的计算器应用程序。这个计算器具有基本的加减乘除功能以及开平方和清零功能。一、设计目标实现简单的加、减、乘、除等双目运算。实现开平方等单目运算。提供清零功能用于清空文本框。二、界面设计创建一个主窗口JFrame。在窗口中添加一个文本框JTextField用于显示输入和计算结果。在窗口中添加一个面板JPanel并使用GridLayout布局管理器来排列按钮。在面板上添加数字按钮0-9、运算符按钮、-、*、/、开平方按钮sqrt、小数点按钮.和等号按钮以及清零按钮C。三、功能实现创建主窗口和组件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 JPanel panel; // 面板 private JButton[] buttons; // 按钮数组 public Calculator() { setTitle(计算器); setSize(300, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); // 窗口居中 textField new JTextField(); textField.setEditable(false); // 禁止直接编辑文本框 textField.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐 textField.setFont(new Font(Arial, Font.BOLD, 20)); // 设置字体 panel new JPanel(); panel.setLayout(new GridLayout(5, 4, 5, 5)); // 5行4列间距5 String[] buttonLabels { 7, 8, 9, /, 4, 5, 6, *, 1, 2, 3, -, 0, ., sqrt, , C, , , // C为清零为等号后两个空位用于布局 }; buttons new JButton[buttonLabels.length]; for (int i 0; i buttonLabels.length; i) { buttons[i] new JButton(buttonLabels[i]); buttons[i].addActionListener(this); // 添加事件监听器 panel.add(buttons[i]); } add(textField, BorderLayout.NORTH); // 文本框放在北边 add(panel, BorderLayout.CENTER); // 面板放在中间 }实现事件处理Overridepublic void actionPerformed(ActionEvent e) { String command e.getActionCommand(); StringBuilder input new StringBuilder(textField.getText()); switch (command) { case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, .: input.append(command); break; case , -, *, /, sqrt: if (!input.toString().trim().isEmpty()) { input.append( ).append(command).append( ); } else { input.append(command).append( ); // 开平方前需要空格以区分单目运算 } break; case C: input.setLength(0); // 清空输入 break; case : try { String result evaluate(input.toString()); textField.setText(result); } catch (Exception ex) { textField.setText(错误: ex.getMessage()); } input.setLength(0); // 清空输入以便下次计算 break; } textField.setText(input.toString()); } // 计算表达式的结果 private String evaluate(String expression) throws Exception { // 简单的表达式解析和计算逻辑这里使用栈来处理 // 注意这个实现仅用于演示并未处理所有可能的错误情况 String[] tokens expression.split( ); StackDouble stack new Stack(); for (String token : tokens) { if (!token.isEmpty()) { if (isOperator(token)) { double b stack.pop(); double a stack.pop(); stack.push(calculate(a, b, token)); } else if (token.equals(sqrt)) { double a stack.pop(); stack.push(Math.sqrt(a)); } else { stack.push(Double.parseDouble(token)); } } } return stack.pop().toString(); } // 判断是否为运算符 private boolean isOperator(String token) { return token.equals() || token.equals(-) || token.equals(*) || token.equals(/); } // 执行基本的算术运算 private double calculate(double a, double b, String operator) throws Exception { switch (operator) { case : return a b; case -: return a - b; case *: return a * b; case /: if (b 0) throw new Exception(被除数不能为0); return a / b; default: throw new Exception(未知运算符: operator); } }启动应用程序public static void main(String[] args) {SwingUtilities.invokeLater(() - { Calculator calculator new Calculator(); calculator.setVisible(true); }); }}四、功能测试运行程序确保窗口正常显示。输入数字和运算符点击等号查看计算结果。测试开平方功能。测试清零功能。这个案例展示了如何使用Java Swing库来创建一个基本的图形界面计算器。你可以根据需要进一步扩展和完善这个计算器例如添加更多的数学函数、改进错误处理、优化用户界面等。