1、 减法运算: 用- 按钮进行运算; 乘法运算: 用 * 按钮进行运算; 除法运算: 用 / 按钮进行运算; 清零键: 用 清空 按钮实现; 3. 2 用户界面设计 该计算器程序的设计: 用户界面包括 Swing 组件, 不过程序中大都使用的是 AWT 组件. import java. awt. *; 在 AWT 组件中: (1) 、 使用了面板和按钮: mianban 1, 2, 3; private JPanel mianBan1 = new JPanel() ; /面板 1 存放, 窗口、 和清空按钮 chuangKou. add(mianBan1, BorderLayout. NORTH
2、) ; /面板 1, 存放窗口的北边 private JPanel mianBan2 = new JPanel() ; /存放其他按钮 mianBan2. add(s7) ; mianBan2. add(s8) ; mianBan2. add(s9) ; mianBan2. add(jia) ; mianBan2. add(s4) ; mianBan2. add(s5) ; mianBan2. add(s6) ; mianBan2. add(jian) ; mianBan2. add(s1) ; mianBan2. add(s2) ; mianBan2. add(s3) ; mianBan2.
3、 add(cheng) ; mianBan2. add(s0) ; mianBan2. add(dian) ; mianBan2. add(deng) ; mianBan2. add(chu) ; mianBan2. setLayout(new GridLayout(4, 4) ) ; / 面板 2 的布局模式 Button s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; Button jia, jian, cheng, chu; Button 清空, = , . ; private JPanel mianBan3 = new JPanel() ; /存放标签
4、JLabel biaoQian0 = new JLabel(- 屠 式 计算器-) ; /标签 mianBan3. add(biaoQian0) ; chuangKou. add(mianBan3, BorderLayout. SOUTH) ; / 位于窗口南边 (2)、 界面属性: chuangKou. setVisible(true) ; /可见 chuangKou. pack() ; /把容器包起来 chuangKou. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE) ; / 直接退出 shuRuKuang. setHorizontalAl
5、ignment(JTextField. RIGHT ) ; / 编 辑 框文字右对齐 /chuangKou. setResizable(false) ; /不能调大小 chuangKou. setLocation(500, 300) ; /坐标 chuangKou. setSize(330, 250) ; /大小 (3)、 给按钮添加背景颜色: jia. setBackground(new Color(255, 50, 50) ) ; jian. setBackground(new Color(255, 50, 50) ) ; cheng. setBackground(new Color(25
6、5, 50, 50) ) ; chu. setBackground(new Color(255, 50, 50) ) ; dian. setBackground(new Color(60, 200, 50) ) ; deng. setBackground(new Color(60, 200, 50) ) ; s0. setBackground(new Color(60, 200, 50) ) ; s1. setBackground(new Color(60, 200, 50) ) ; s2. setBackground(new Color(60, 200, 50) ) ; s3. setBac
7、kground(new Color(60, 200, 50) ) ; s4. setBackground(new Color(60, 200, 50) ) ; s5. setBackground(new Color(60, 200, 50) ) ; s6. setBackground(new Color(60, 200, 50) ) ; s7. setBackground(new Color(60, 200, 50) ) ; s8. setBackground(new Color(60, 200, 50) ) ; s9. setBackground(new Color(60, 200, 50)
8、 ) ; qingKong. setBackground(new Color(200, 250, 100) ) ; /清除按钮颜色 mianBan1. setBackground(new Color(200, 200, 255) ) ; /mianBan1 颜色 mianBan3. setBackground(new Color(200, 200, 255) ) ; /mianBan2 颜色 (4)、 事件监听: dian. addMouseListener(new OperationMouseListener() ) ; deng. addMouseListener(new Operatio
9、nMouseListener() ) ; a、 注册四则运算监听 jia. addMouseListener(new YunSuanJianTing() ) ; jian. addMouseListener(new YunSuanJianTing() ) ; cheng. addMouseListener(new YunSuanJianTing() ) ; chu. addMouseListener(new YunSuanJianTing() ) ; b、 注册数字监听事件 s0. addMouseListener(new ShuZiJianTing() ) ; s1. addMouseLis
10、tener(new ShuZiJianTing() ) ; s2. addMouseListener(new ShuZiJianTing() ) ; s3. addMouseListener(new ShuZiJianTing() ) ; s4. addMouseListener(new ShuZiJianTing() ) ; s5. addMouseListener(new ShuZiJianTing() ) ; s6. addMouseListener(new ShuZiJianTing() ) ; s7. addMouseListener(new ShuZiJianTing() ) ;
11、s8. addMouseListener(new ShuZiJianTing() ) ; s9. addMouseListener(new ShuZiJianTing() ) ; c、 清空监听器: qingKong. addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) shuRuKuang. setText() ; /清空编辑框 d、 数字按钮监听器: private class ShuZiJianTing implements MouseListener public void
12、mouseClicked(MouseEvent e) if(shuRuKuang. getText() . trim() . equals(0) ) /如果文本框已 经是0, 结果还是 0 shuRuKuang. setText(JButton) e. getSource() ) . getText() . trim() ) ; shuRuKuang. setText(shuRuKuang. getText() . concat(JButton) e. getSource() ) . getText() . trim() ) ) ; public void mouseEntered(Mouse
13、Event e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) e、 运算按钮监听器: private class YunSuanJianTing implements MouseListener /如果输入的是运算符号, 保存第一个结果和运算符号 public void mouseClicked(MouseEvent e) num1 = shuRuKuang. getText() . trim() ; sh
14、uRuKuang. setText() ; operator = (JButton) e. getSource() ) . getText() . trim() ; public void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public void mousePressed(MouseEvent e) public void mouseReleased(MouseEvent e) f、 小数点、 等号监听器: private class OperationMouseListener implement
15、s MouseListener public void mouseClicked(MouseEvent e) if(e. getSource() = dian) String text = shuRuKuang. getText() . trim() ; /如果按了小数点, 如果文本框已经有小数点, 不做任何操作, 否则在结果后面加上小数点 if(text. indexOf(. ) = -1) shuRuKuang. setText(text. concat(. ) ) ; else if(e. getSource() = deng) /如果是等号 if(!operator. trim() .
16、 equals() ) if(!shuRuKuang. getText() . trim() . equals() ) double result = 0D; if(operator. equals(+) ) /执行加法运算 result = Double. parseDouble(num1) + Double. parseDouble(shuRuKuang. getText() . trim() ) ; else if(operator. equals(-) ) /减法运算 result = Double. parseDouble(num1) - Double. parseDouble(sh
17、uRuKuang. getText() . trim() ) ; else if(operator. equals(*) ) /乘法运算 result = Double. parseDouble(num1) * Double. parseDouble(shuRuKuang. getText() . trim() ) ; else if(operator. equals(/) ) /除法运算 result = Double. parseDouble(num1) / Double. parseDouble(shuRuKuang. getText() . trim() ) ; /格式化最终结果, 保
18、留两位小数点 shuRuKuang. setText(new DecimalFormat(0. 00) . format(result) ) ; 四、 测试 4. 1 加法运算(实现 49+57=106): 4. 2 减法运算(实现 48-79= -31): 4. 3 乘法运算(684*211=144324): 4. 4 除法运算(251/51=4. 92): 4. 5 清空: 任何情况下鼠标点击清空按钮都可以进行清空操作 4. 6 计算器整界面运行效果: 五、 设计缺陷: 5. 1 该计算器只能进行简单的加、 减、 乘、 除四则运算, 不能进行科学计算比如: 幂运算、 对数运算、 三角函数运
19、算等。 5. 2 在进行运算的过程中, 输入数值以后当按下加减乘除任意一个按钮时数值会自 动清空, 这带来的不便之处在于有时候会忘记输入的值。 5. 3 在不用鼠标的情况下不能对该计算器进行操作, 把键盘上小键盘各个按键与界面各个按钮相对应起来操作会更加方便。 六、 总结体会: 做完这次程序设计, 我学到了很多知识, 我选的是计算机程序, 大家都说计算机程序比较简单。 可我觉得虽然简单, 但也有许多不清楚的地方。 尤其是刚开始编写程序的时候, 好多地方都出错, 做着总是比想象的难。 学习 JAVA 半年了, 没学习前只是听说过, 现在对 JAVA 也有了一些更深入的了解。 比起 C 语言, J
20、AVA 语言的确先进了许多。 计算器的设计, 首先就是考虑图形界面怎么分布。 在头脑里大概有了思路。 我想设计一个计算器除了可以进行基本的加减乘除外还具备求平方、 倒数和其他之类的一些功能。 可到最后我也只是弄出了加减乘除。 我们用了 十天的时间做程序设计, 十天虽然不长, 但我的收获挺大。 把以前好多不清晰的知识在老师的指导下, 我慢慢懂了许多。 用了好七天的时间勉强的做了一个程序出来。 通过这次课程设计, 我体会了 JAVA 广泛的运用性。 由于时间仓促还有很多有待完善的地方, 在今后的学习中, 我会加倍努力去做好。 附: 程序全部代码 import java. awt. *; impor
21、t javax. swing. *; import java. awt. event. *; import java. text. DecimalFormat; public class JiSuanQi public JFrame chuangKou = new JFrame(计算器) ; private JPanel mianBan2 = new JPanel() ; private JTextField shuRuKuang = new JTextField(20) ; private JButton qingKong = new JButton(清 空) ; private JButt
22、on jia = new JButton(+) ; private JButton jian = new JButton(-) ; private JButton cheng = new JButton(*) ; private JButton chu = new JButton(/) ; private JButton dian = new JButton(. ) ; private JButton deng = new JButton(=) ; private JButton s0 = new JButton(0) ; private JButton s1 = new JButton(1)
23、 ; private JButton s2 = new JButton(2) ; private JButton s3 = new JButton(3) ; private JButton s4 = new JButton(4) ; private JButton s5 = new JButton(5) ; private JButton s6 = new JButton(6) ; private JButton s7 = new JButton(7) ; private JButton s8 = new JButton(8) ; private JButton s9 = new JButto
24、n(9) ; private String num1 = ; private String operator = ; public static void main(String args) new JiSuanQi() ; public JiSuanQi() mianBan1. add(shuRuKuang) ; mianBan1. add(qingKong) ; chuangKou. add(mianBan1, BorderLayout. NORTH) ; mianBan2. add(s7) ; chuangKou. add(mianBan2, BorderLayout. CENTER)
25、; JLabel biaoQian0 = new JLabel(-屠式计算器-) ; mianBan3. add(biaoQian0) ; chuangKou. pack() ; chuangKou. setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE) ; shuRuKuang. setHorizontalAlignment(JTextField. RIGHT ) ; chuangKou. setLocation(500, 300) ; chuangKou. setSize(330, 250) ; mianBan1. setBackground(new Color(200, 200, 255) ) ; mianBan3. setBackground(new Color(200, 200, 255) ) ; jia. addMouseListener(new YunSuanJianTing() ) ; s0. addMouseListener(new ShuZiJianTing() ) ; s1. addMo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1