/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package calculator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
*
* @author Administrator
*/
public class Calculator extends javax.swing.JFrame {
/**
* Creates new form Calculator
*/
public Calculator() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jPanel1 = new javax.swing.JPanel();
jButton5 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jTextField = new javax.swing.JTextField();
jButton7 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButtonDiv = new javax.swing.JButton();
jButtonClear = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButtonAdd = new javax.swing.JButton();
jButtonSub = new javax.swing.JButton();
jButton0 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButtonResult = new javax.swing.JButton();
jSeparator1 = new javax.swing.JSeparator();
jButton1 = new javax.swing.JButton();
jButtonBackSpace = new javax.swing.JButton();
jButtonMut = new javax.swing.JButton();
jButtonPoint = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setOpaque(false);
jButton5.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton5.setText("5");
jButton5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton5MouseReleased(evt);
}
});
jButton2.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton2.setText("2");
jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton2MouseReleased(evt);
}
});
jTextField.setEditable(false);
jTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
jTextField.setText("0");
jTextField.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextFieldActionPerformed(evt);
}
});
jButton7.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton7.setText("7");
jButton7.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton7MouseReleased(evt);
}
});
jButton8.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton8.setText("8");
jButton8.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton8MouseReleased(evt);
}
});
jButton6.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton6.setText("6");
jButton6.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton6MouseReleased(evt);
}
});
jButtonDiv.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonDiv.setText("/");
jButtonDiv.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonDivMouseReleased(evt);
}
});
jButtonClear.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonClear.setText("CE");
jButtonClear.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonClearMouseReleased(evt);
}
});
jButton3.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton3.setText("3");
jButton3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton3MouseReleased(evt);
}
});
jButton9.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton9.setText("9");
jButton9.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton9MouseReleased(evt);
}
});
jButtonAdd.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonAdd.setText("+");
jButtonAdd.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonAddMouseReleased(evt);
}
});
jButtonSub.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonSub.setText("-");
jButtonSub.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonSubMouseReleased(evt);
}
});
jButton0.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton0.setText("0");
jButton0.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton0MouseReleased(evt);
}
});
jButton4.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton4.setText("4");
jButton4.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton4MouseReleased(evt);
}
});
jButtonResult.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonResult.setText("=");
jButtonResult.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonResultMouseReleased(evt);
}
});
jButton1.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButton1.setText("1");
jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButton1MouseReleased(evt);
}
});
jButtonBackSpace.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonBackSpace.setText("←");
jButtonBackSpace.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonBackSpaceMouseReleased(evt);
}
});
jButtonMut.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonMut.setText("*");
jButtonMut.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonMutMouseReleased(evt);
}
});
jButtonPoint.setFont(new java.awt.Font("宋体", 0, 18)); // NOI18N
jButtonPoint.setText(".");
jButtonPoint.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(java.awt.event.MouseEvent evt) {
jButtonPointMouseReleased(evt);
}
});
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSeparator1)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(34, 34, 34)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton7, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton8)
.addGap(10, 10, 10)
.addComponent(jButton9)
.addGap(10, 10, 10)
.addComponent(jButtonDiv)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonBackSpace))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton0, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonPoint))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2)
.addGap(10, 10, 10)
.addComponent(jButton3)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButtonSub)
.addComponent(jButtonAdd))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonResult, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton4)
.addGap(10, 10, 10)
.addComponent(jButton5)
.addGap(10, 10, 10)
.addComponent(jButton6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonMut)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButtonClear, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(30, 30, 30)
.addComponent(jTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 267, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(46, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jButton1, jButton2, jButton3, jButton4, jButton5, jButton6, jButton7, jButton8, jButton9, jButtonAdd, jButtonDiv, jButtonMut, jButtonPoint, jButtonSub});
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(25, 25, 25)
.addComponent(jTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 22, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton7)
.addComponent(jButton8)
.addComponent(jButton9)
.addComponent(jButtonDiv)
.addComponent(jButtonBackSpace))
.addGap(9, 9, 9)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton5)
.addComponent(jButton6)
.addComponent(jButtonMut)
.addComponent(jButtonClear))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton2)
.addComponent(jButton3)
.addComponent(jButtonSub)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonPoint)
.addComponent(jButton0)
.addComponent(jButtonAdd)))
.addComponent(jButtonResult, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(47, Short.MAX_VALUE))
);
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jButton1, jButton2, jButton3, jButton4, jButton5, jButton6, jButton7, jButton8, jButton9, jButtonAdd, jButtonDiv, jButtonMut, jButtonPoint, jButtonSub});
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/calculator/QQ图片20150919225503.png"))); // NOI18N
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 344, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 344, Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 309, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE))
);
javax.swing.GroupLayout jLayeredPane1Layout = new javax.swing.GroupLayout(jLayeredPane1);
jLayeredPane1.setLayout(jLayeredPane1Layout);
jLayeredPane1Layout.setHorizontalGroup(
jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jLayeredPane1Layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 1, Short.MAX_VALUE))
.addGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jLayeredPane1Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE)))
);
jLayeredPane1Layout.setVerticalGroup(
jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jLayeredPane1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
jLayeredPane1.setLayer(jPanel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane1.setLayer(jPanel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jButton1MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton1MouseReleased
// TODO add your handling code here:
setNum("1");
}//GEN-LAST:event_jButton1MouseReleased
private void jButton2MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton2MouseReleased
// TODO add your handling code here:
setNum("2");
}//GEN-LAST:event_jButton2MouseReleased
private void jButton3MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton3MouseReleased
// TODO add your handling code here:
setNum("3");
}//GEN-LAST:event_jButton3MouseReleased
private void jButton4MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton4MouseReleased
// TODO add your handling code here:
setNum("4");
}//GEN-LAST:event_jButton4MouseReleased
private void jButton5MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton5MouseReleased
// TODO add your handling code here:
setNum("5");
}//GEN-LAST:event_jButton5MouseReleased
private void jButton6MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton6MouseReleased
// TODO add your handling code here:
setNum("6");
}//GEN-LAST:event_jButton6MouseReleased
private void jButton7MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton7MouseReleased
// TODO add your handling code here:
setNum("7");
}//GEN-LAST:event_jButton7MouseReleased
private void jButton8MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton8MouseReleased
// TODO add your handling code here:
setNum("8");
}//GEN-LAST:event_jButton8MouseReleased
private void jButton9MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton9MouseReleased
// TODO add your handling code here:
setNum("9");
}//GEN-LAST:event_jButton9MouseReleased
private void jButton0MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton0MouseReleased
// TODO add your handling code here:
setNum("0");
}//GEN-LAST:event_jButton0MouseReleased
private void jButtonClearMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonClearMouseReleased
// TODO add your handling code here:
//按下清零键,将jTextField初始化为0
jTextField.setText("0");
}//GEN-LAST:event_jButtonClearMouseReleased
private void jButtonAddMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonAddMouseReleased
// TODO add your handling code here:
//将jTextField的内容赋给strBuf
StringBuffer strBuf = new StringBuffer(jTextField.getText());
//取strBuf的最后一个字符赋值给ch
char ch = strBuf.charAt(strBuf.length() - 1);
//如果ch不等于+-*/
if (ch != '+' && ch != '-' && ch != '*' && ch != '/') {
//在jTextField原本内容的后面加添“+”
jTextField.setText(strBuf + "+");
} else {
//否则删除最后一个字符,然后在字符串后面添加“+”
strBuf.deleteCharAt(strBuf.length() - 1);
String str = new String(strBuf);
jTextField.setText(str + "+");
}
}//GEN-LAST:event_jButtonAddMouseReleased
private void jButtonSubMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonSubMouseReleased
// TODO add your handling code here:
//同加法
StringBuffer strBuf = new StringBuffer(jTextField.getText());
char ch = strBuf.charAt(strBuf.length() - 1);
if (ch != '+' && ch != '-' && ch != '*' && ch != '/') {
jTextField.setText(strBuf + "-");
} else {
strBuf.deleteCharAt(strBuf.length() - 1);
String str = new String(strBuf);
jTextField.setText(str + "-");
}
}//GEN-LAST:event_jButtonSubMouseReleased
private void jButtonMutMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonMutMouseReleased
// TODO add your handling code here:
//同加法
StringBuffer strBuf = new StringBuffer(jTextField.getText());
char ch = strBuf.charAt(strBuf.length() - 1);
if (ch != '+' && ch != '-' && ch != '*' && ch != '/') {
jTextField.setText(strBuf + "*");
} else {
strBuf.deleteCharAt(strBuf.length() - 1);
String str = new String(strBuf);
jTextField.setText(str + "*");
}
}//GEN-LAST:event_jButtonMutMouseReleased
private void jButtonDivMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonDivMouseReleased
// TODO add your handling code here:
//同加法
StringBuffer strBuf = new StringBuffer(jTextField.getText());
char ch = strBuf.charAt(strBuf.length() - 1);
if (ch != '+' && ch != '-' && ch != '*' && ch != '/') {
jTextField.setText(strBuf + "/");
} else {
strBuf.deleteCharAt(strBuf.length() - 1);
String str = new String(strBuf);
jTextField.setText(str + "/");
}
}//GEN-LAST:event_jButtonDivMouseReleased
private void jButtonBackSpaceMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonBackSpaceMouseReleased
// TODO add your handling code here:
StringBuffer strBuf = new StringBuffer(jTextField.getText());
//如果长度大于等于1,删除最后一个字符并显示在jTextField
if (strBuf.length() - 1 >= 1) {
strBuf.deleteCharAt(strBuf.length() - 1);
String str = new String(strBuf);
jTextField.setText(str);
} else {
//否则清零
jTextField.setText("0");
}
}//GEN-LAST:event_jButtonBackSpaceMouseReleased
private void jButtonResultMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonResultMouseReleased
// TODO add your handling code here:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
Double result = null;
try {
result = (Double) se.eval("(" + jTextField.getText() + "*1.0" + ")");
} catch (ScriptException ex) {
Logger.getLogger(Calculator.class.getName()).log(Level.SEVERE, null, ex);
}
jTextField.setText(result.toString());
}//GEN-LAST:event_jButtonResultMouseReleased
private void jButtonPointMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButtonPointMouseReleased
// TODO add your handling code here:
String strText = jTextField.getText();
//如果jTextField的内容为“0”则直接在后面添“.”
if (strText.equals("0")) {
jTextField.setText(strText + ".");
} else {
//否则从字符串最后往前遍历,直到碰到+-*/为止,查看是否有“.”
StringBuffer strBuf = new StringBuffer(jTextField.getText());
int temp = 0;
int i = strBuf.length() - 1;
while (i > strBuf.lastIndexOf("+") && i > strBuf.lastIndexOf("-") && i > strBuf.lastIndexOf("*") && i > strBuf.lastIndexOf("/")) {
//如果有“.”,跳出循环
if (strBuf.charAt(i) == '.') {
temp = i;
break;
} else {
//否则继续遍历
i--;
temp = i;
}
}
//如果直到碰到+-*/还没有碰到“.”,在就TextField后面加个“.”
if (temp == strBuf.lastIndexOf("+") || temp == strBuf.lastIndexOf("-") || temp == strBuf.lastIndexOf("*") || temp == strBuf.lastIndexOf("/") || temp == 0) {
jTextField.setText(strBuf.toString() + ".");
} else {
//否则返回原字符串
jTextField.setText(strBuf.toString());
}
}
}//GEN-LAST:event_jButtonPointMouseReleased
private void jTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_jTextFieldActionPerformed
private void setNum(String str) {
//将jTextField的内容赋给strText
String strText = jTextField.getText();
//如果内容为“0”
if (strText.equals("0")) {
//在后面追加参数str
jTextField.setText(str);
} else {
//否则将jTextField的内容赋给strBuf
StringBuffer strBuf = new StringBuffer(jTextField.getText());
//如果strBuf的长度小于3
if (strBuf.length() < 3) {
//在TextField的后面添加参数str
jTextField.setText(strBuf + str);
} else {
//否则判断strBuf的倒数第一个字符是否为“0”并且倒数第二个字符是否为+-*/
char ch1 = strBuf.charAt(strBuf.length() - 1);
char ch2 = strBuf.charAt(strBuf.length() - 2);
if (ch1 == '0' && (ch2 == '+' || ch2 == '-' || ch2 == '*' || ch2 == '/')) {
//如果是就删除最后一个字符并在后面添加参数str
strBuf.deleteCharAt(strBuf.length() - 1);
String strText1 = new String(strBuf);
jTextField.setText(strText1 + str);
} else {
//否则直接在原字符串后面添加参数str
String strText2 = new String(strBuf);
jTextField.setText(strText2 + str);
}
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Calculator.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Calculator().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton0;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JButton jButtonAdd;
private javax.swing.JButton jButtonBackSpace;
private javax.swing.JButton jButtonClear;
private javax.swing.JButton jButtonDiv;
private javax.swing.JButton jButtonMut;
private javax.swing.JButton jButtonPoint;
private javax.swing.JButton jButtonResult;
private javax.swing.JButton jButtonSub;
private javax.swing.JLabel jLabel1;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JTextField jTextField;
// End of variables declaration//GEN-END:variables
}
注:本博客只摘取了java文件内容,整个项目请点击文章连接。