SWT实现的简易J2SE计算器

需积分: 2 0 下载量 162 浏览量 更新于2024-09-10 收藏 12KB TXT 举报
"这是一个基于J2SE(Java标准版)开发的简单计算器程序,它支持基本的加、减、乘、除、求平方根以及数字1到9和清除、退格等操作。" 在Java编程中,`j2se计算器`项目涉及到的核心知识点包括: 1. **Java GUI编程**:这个计算器是使用Java的Swing或 SWT库来创建图形用户界面的。在这个例子中,使用的是SWT(Standard Widget Toolkit),它是Eclipse项目的一部分,提供了一套与平台无关的API用于构建桌面应用程序。 2. **SWT库**:SWT是Java的一个GUI库,提供了多种组件,如按钮(Button)、文本框(Text)、标签(Label)等,用于创建用户界面。在这个程序中,我们可以看到创建了多个Button对象来代表计算器上的数字和运算符,一个Text对象用来显示计算结果。 3. **事件监听**:SWT中的控件可以通过添加事件监听器来响应用户的交互。例如,`SelectionAdapter`和`SelectionEvent`用于处理按钮被点击的事件。当用户点击按钮时,对应的`SelectionAdapter`会触发`SelectionEvent`,从而执行相应的计算逻辑。 4. **按钮逻辑**:每个按钮(button_1至button_16)代表一个数字或运算符,它们的实例变量用于在程序中引用这些按钮。按钮的点击事件通常会更新当前的计算表达式或结果。例如,数字按钮会添加数字到当前显示的文本,运算符按钮则会存储当前的数值并改变运算符状态。 5. **计算功能实现**:在代码中,可以看到有专门的按钮用于执行特定操作,比如`btnSqrt`代表求平方根,`btnx`可能是乘法操作,`btnCe`用于清除当前输入,`btnBack`可能用于退格。这些按钮的事件处理方法会包含对应的数学计算逻辑。 6. **内存管理**:程序中定义了`M1`和`M2`两个字符串变量,这可能是为了实现简单的内存功能,允许用户存储和调用之前的计算结果。 7. **状态管理**:`now`和`symbol`变量分别用于存储当前计算的数值和运算符。`now`表示当前显示的数字,`symbol`记录了上次点击的运算符,以便进行正确的计算。 8. **数据类型转换**:由于GUI控件通常与字符串交互,所以在实际计算时可能需要将字符串转换为数值类型(如`Integer.parseInt()`或`Double.parseDouble()`),然后进行数学运算。 9. **异常处理**:在实际编程中,应该考虑到用户可能会输入无效的数据,例如除以零或者输入非数字字符。因此,异常处理机制是必不可少的,以防止程序因为非法输入而崩溃。 通过这个项目,开发者可以学习到如何使用SWT构建用户界面,处理用户输入,执行计算逻辑,以及管理程序的状态。同时,也可以了解到Java GUI编程的基本流程和注意事项。
2012-05-30 上传
计算器 一、 背景描述 该计算器模仿Windows自带的计算器,只实现标准型计算器功能。 在完成Swing的学习后,练习使用Swing包中JFrame、JButton、JLabel、JTextField、JMenu、JMenuItem等组件完成图形界面绘制。 二、 实现要求 前期能够独立思考并完成计算器的逻辑代码。 三、 实现技术 a) 熟练使用JButton、JTextField、JLabel等Swing包中组件。 b) 熟练使用BorderLayout、FlowLayout、BoxLayout、GridLayout等布局。 c) 能够根据需要覆盖paint函数,定制自己需要的组件。 四、 类图 a) 类图 b) 类图说明 类名称 Calculator 类描述 计算器界面类。 包描述 main 函数描述 Calculator() 计算器界面类缺省构造函数。 private void initMenu() 初始化菜单添加。 private void initButton() 初始化按钮。按钮的初始化、部署、事件添加等。 private void initAdd() 初始化各个容器的添加。 public void actionPerformed(ActionEvent e) 处理按钮事件。1.复制事件2.粘贴事件,此处应用正则表达式(详细请参考类 java.util.regex.Pattern)解析粘贴板中的内容,仅得到内容中最后的数字和小数点。3.关于事件 private boolean isContain(String str,String ch) 检测某字符串中是否包含某个字符串。 private void showResult(String result) 设置计算的得到的结果。 private void clearAll(String result) 清空结果。 private void countResult(double value2) 计算结果并显示结果。 内部类 private class ButtonListener extends AbstractAction 按钮事件。包括+、-、*、/、1/x、数字等按钮事件。 此类继承AbstractAction 类名称 CalculateButton 类描述 定制自己的按钮类。练习自己定制按钮。比如定制按钮的高度、宽度、文字等。 包描述 main 函数描述 public CalculateButton(Action listener,String text,int key,boolean isctrl) 构造一个具有缺省事件、指定文本、指定快捷键的JButton。 public CalculateButton(Action listener,String text,int key,boolean isctrl,Color color) 构造一个具有缺省事件、指定文本、指定快捷键、指定文本颜色的JButton。 public CalculateButton(Action listener,String text,int key,boolean isctrl,Color color,int width,int height) 构造一个具有缺省事件、指定文本、指定快捷键、指定文本颜色的JButton。 protected void paintBorder(Graphics g) 绘制边界。 c) 效果图 五、 技术技巧提问 a) 思考用户如果多次连续按如+、-、*、/等键时,应该怎么处理?请仔细考虑好该逻辑。 b) 练习使用剪贴板的功能,实现复制、粘贴功能。考虑当粘贴板中数据值带有多个小数点时如何处理然后显示到文字框上。