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
- 码云