用netbeans编写的java简易计算器

/*

 * 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文件内容,整个项目请点击文章连接。

点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值