作者:我想去海边6_414 | 来源:互联网 | 2023-05-17 23:20
此计算器能够实现简单的加减乘除运算。插入图片后的界面:创建一个方法来获取数字的值:privatevoidsetNum(Stringstr){实例化对象,获取文本框中的
此计算器能够实现简单的加减乘除运算。
插入图片后的界面:
![](https://www.#.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTUxMDA2MTQyNTM4MTQwP3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdi9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==)
创建一个方法来获取数字的值:
private void setNum(String str){
//实例化对象,获取文本框中的内容
String strText = new String(jTextField1.getText());
//如果jTextField1的内容等于“0”,则文本框等于输入的内容str
if(strText.equals("0")){
jTextField1.setText(str);
}else{
//否则在原来的内容上追加str
StringBuffer strBuf = new StringBuffer(strText);
strBuf.append(str);
jTextField1.setText(strBuf.toString());
}
}
加减乘除和小数点运算:
注:这里的小数点实现不太合理,但是只要人为输入不错误就能保证小数点的正确实现
private void setPoint(String str){
String strText = jTextField1.getText();
//判断strText中字符串的最右边以为是否为运算符
int lastRight = strText.length()-1;
//获得倒数第二位的字符
char ch = strText.charAt(lastRight);
if(ch == '+' || ch == '_' || ch == '*' || ch == '/' || ch == '.'){
//替换strText最右边的运算符为当前按键str,如“12345” “1234”
String strResult = strText.substring(0, lastRight)+str;
//strResult赋值
jTextField1.setText(strResult);
}else{
//strText追加当前str
jTextField1.setText(strText+str);
}
}
等于功能:
private void equalMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
//引用脚本,調用js中的eavl()方法
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
try {
//把字符串转换为表达式(Double类型)“6+3*3”>- 6+3*3
Double num =(Double)se.eval("("+jTextField1.getText()+")*1.0");
//从文本框中输出结果 jTextField1.setText(num.toString()); } catch (ScriptException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); jTextField1.setText("输入错误,请重新输入"); } }
退格功能:
private void backspaceMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
String strText = new String(jTextField1.getText());
if(strText.equals("0")){
// jTextField1.setText(str);
}else{
StringBuffer strBuf = new StringBuffer(strText);
//按下标删除每一个字符,直到删除完
strBuf.deleteCharAt(strBuf.length()-1);
jTextField1.setText(strBuf.toString());
//当删除到只剩一位数时自动变“0”
if(strBuf.length()<1){
jTextField1.setText("0");
}
}
}
清零功能:
private void clearMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
String strText = new String(jTextField1.getText());
if(strText.equals("0")){
jTextField1.setText("0");
}else{
jTextField1.setText("0");
}
}
点击按键变色功能:
//鼠标移动到“9”时按钮变为黄色
private void jButton9MouseMoved(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
jButton9.setBackground(Color.YELLOW);
}
//鼠标从数字“9”移开是按钮变回灰色
private void jButton9MouseExited(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
jButton9.setBackground(Color.LIGHT_GRAY);
}