计算器源代码
### 计算器源代码分析 #### 一、概述 本篇内容主要解析一份Java编写的计算器源代码,这份代码适用于刚开始接触Swing图形界面的新手。Swing是Java的一个图形用户界面(GUI)工具包,它提供了丰富的组件来构建桌面应用。通过分析此计算器源代码,我们将深入了解Swing的基本用法以及如何实现一个简单的计算器应用。 #### 二、Swing基础知识 在深入分析源代码之前,我们先简要回顾一下Swing的一些基础知识: 1. **容器(Container)**:Swing中的容器用于容纳其他GUI组件。本例中的`JFrame`就是一个顶级容器。 2. **布局管理器(Layout Manager)**:Swing支持多种布局管理器,如`BorderLayout`、`GridLayout`等,它们用于控制组件在容器中的排列方式。 3. **事件处理(Event Handling)**:Swing支持基于监听器的事件模型,例如按钮点击等事件可以通过实现监听器接口(如`ActionListener`)来响应。 #### 三、源代码详解 ##### 1. 类结构与初始化 源代码中的主类名为`SunnyCalculator`,它实现了`ActionListener`接口,意味着它可以处理动作事件。在构造函数中完成了整个计算器界面的搭建: - 创建了`JFrame`对象`f`,并设置了其标题。 - 初始化了菜单栏,包括“编辑”、“查看”、“帮助”三个菜单。 - 设置了布局,并添加了文本框和按钮等组件。 ```java public SunnyCalculator() { f = new JFrame("SunnyCalculator_杨梅树的盔甲"); Container contentPane = f.getContentPane(); // 初始化菜单栏 JMenuBar mBar = new JMenuBar(); mBar.setOpaque(true); // 创建“编辑”菜单 JMenu mEdit = new JMenu("编辑(E)"); mEdit.setMnemonic(KeyEvent.VK_E); JMenuItem mCopy = new JMenuItem("复制(C)"); mEdit.add(mCopy); JMenuItem mPaste = new JMenuItem("粘贴(P)"); mEdit.add(mPaste); // 创建“查看”菜单 JMenu mView = new JMenu("查看(V)"); mView.setMnemonic(KeyEvent.VK_V); mView.add(new JMenuItem("标准型")); mView.add(new JMenuItem("科学型")); mView.addSeparator(); mView.add(new JMenuItem("查看分组")); // 创建“帮助”菜单 JMenu mHelp = new JMenu("帮助(H)"); mHelp.setMnemonic(KeyEvent.VK_H); mHelp.add(new JMenuItem("帮助主题")); mHelp.addSeparator(); mHelp.add(new JMenuItem("关于计算器")); // 添加到菜单栏 mBar.add(mEdit); mBar.add(mView); mBar.add(mHelp); f.setJMenuBar(mBar); // 设置布局 contentPane.setLayout(new BorderLayout()); JPanel pTop = new JPanel(); tResult = new JTextField("0.", 26); tResult.setHorizontalAlignment(JTextField.RIGHT); tResult.setEditable(false); pTop.add(tResult); contentPane.add(pTop, BorderLayout.NORTH); JPanel pBottom = new JPanel(); pBottom.setLayout(new BorderLayout()); JPanel pLeft = new JPanel(); pLeft.setLayout(new GridLayout(5, 1, 3, 3)); bM = new JButton(""); bM.setEnabled(false); pLeft.add(bM); } ``` ##### 2. 功能键定义与事件处理 接下来,代码定义了一些功能键,如`MC`等,并为其添加了事件监听器。 ```java bOther = new JButton("MC"); bOther.addActionListener(this); bOther.setForeground(Color.//...颜色设置未完成 ``` 此处可以看到按钮`MC`的创建,并通过调用`addActionListener(this)`将当前类作为该按钮的监听器。这意味着当用户点击该按钮时,会触发由当前类实现的方法来处理相应的动作事件。 #### 四、计算逻辑 除了界面构建外,源代码还涉及到了计算逻辑的实现。这部分代码利用了各种变量和标志位来跟踪计算的状态,如操作数、运算符等。例如: - `isDouble`:标记是否为实数计算。 - `opFlag`:记录当前运算符。 - `t1`、`t2`、`t3`、`result`:存储计算过程中产生的数值。 - `preOp`、`currentOp`:用于跟踪当前和前一个运算符。 - `op1`、`op2`:存储计算过程中的操作数。 通过这些变量和标志位的合理运用,可以实现基本的数学运算功能。 #### 五、总结 本文通过对一份Java计算器源代码的解析,不仅介绍了Swing的基础用法,还展示了如何构建一个完整的图形界面应用程序。通过学习这份代码,初学者可以更好地理解Swing组件的使用方法、布局管理器的作用以及如何处理用户交互事件。同时,这份代码也为实现更复杂的功能打下了坚实的基础。
剩余10页未读,继续阅读
- 雨亭漫步2013-03-04最近要做计算器,参考下
- 粉丝: 271
- 资源: 10
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- BigData-Notes-sqoop的安装与配置
- C语言-leetcode题解之28-implement-strstr.c
- C语言-leetcode题解之27-remove-element.c
- C语言-leetcode题解之26-remove-duplicates-from-sorted-array.c
- C语言-leetcode题解之24-swap-nodes-in-pairs.c
- C语言-leetcode题解之22-generate-parentheses.c
- C语言-leetcode题解之21-merge-two-sorted-lists.c
- java-leetcode题解之Online Stock Span.java
- java-leetcode题解之Online Majority Element In Subarray.java
- java-leetcode题解之Odd Even Jump.java