此計算器能夠實現簡單的加減乘除運算。
插入圖片後的界面:
創建一個方法來獲取數字的值:
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);
}