1 概述
Java AWT+Swing
实现的简略计算器,性能如下:
- 反对加减乘除
- 反对小数运算
- 键盘监听
- 鼠标监听
2 成果演示
3 一些细节
3.1 运算
运算用到了一个 ExpressionHandle
的动态类,用来计算字符串表达式的值。
其实运算不难,就是根本的运算符以及操作数的入栈出栈操作,就不细说了。
3.2 Base64
图标是应用 Base64
解决的,因为是只有一个图片资源,而且应用图片的话比拟容易呈现门路问题,就应用了 Java
自带的 Base64.Decoder
进行解决,decode
后生成失去字节数组并作为 ImageIcon
的参数,即可正确显示图片。
3.3 字体
字体应用了微软雅黑字体,默认加粗,字号 17 号,应用了反射获取 setFont
进行设置。
3.4 鼠标监听
外围就是 MouseListner
,在mouseEntered
/mouseExited
设置进入和来到时的背景色彩,同时在 mouseClicked
设置响应事件,对等于号、退格以及 Esc
进行特判,其余的间接相应输入框增加字符即可。
3.5 键盘监听
外围是 KeyListner
,keyPressed
设置响应事件,对回车、退格以及等于号进行特判,另外还须要留神组合键,比方 Shift
+8
示意的是乘号,要利用 keyEvent.isShiftDown
判断 shift
是否按下,同时设置对应的按键背景色彩。keyReleased
中设置按键开释事件,在这里就是设置背景,原本想是设置某个按键的,然而可能因为键盘事件响应不灵敏的起因,当按键过快时就会呈现按键被“继续按下”的假象,因而对所有按键进行了响应。
3.6 限度输出字符
利用了 JTextField.setDocument()
以及PlainDocument
,当输出非法时进行提醒,并疏忽对应的输出,外围就是insertString()
。
4 源码
- Github
- 码云