用NetBeans做简单的计算器

本文介绍了如何使用Java Swing和JavaScript引擎在NetBeans环境中构建一个简单的计算器应用。通过监听按钮事件,实现数字输入、小数点添加、清零、加减乘除运算以及错误处理功能。
package jisuanqi;


import java.util.logging.Level;
import java.util.logging.Logger;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

import javax.script.ScriptException;

public class jsj extends javax.swing.JFrame {

 public jsj() {
        initComponents();
    }

 @SuppressWarnings("unchecked")

public void setNum(String str) {
        //获得显示文本内容保存到strText
        String strText = jTextField1.getText();
        //如果文本内容为0,那么改为str;否则添加
        if (strText.equals("0")) {
         //那么改为str
            jTextField1.setText(str);
        } else {
        // 添加
            jTextField1.setText(strText + str);
        }
    }
    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
    }                                        
//实现数字的输入
    private void jButton10MousePressed(java.awt.event.MouseEvent evt) {                                       
setNum("0");        // TODO add your handling code here:
    }                                      


    private void jButton1MousePressed(java.awt.event.MouseEvent evt) {                                      
setNum("1");        // TODO add your handling code here:
    }                                     


    private void jButton2MousePressed(java.awt.event.MouseEvent evt) {                                      
setNum("2");        // TODO add your handling code here:
    }                                     


    private void jButton3MousePressed(java.awt.event.MouseEvent evt) {                                      
   setNum("3");      // TODO add your handling code here:
    }                                     


    private void jButton4MousePressed(java.awt.event.MouseEvent evt) {                                      
      setNum("4");   // TODO add your handling code here:
    }                                     


    private void jButton5MousePressed(java.awt.event.MouseEvent evt) {                                      
setNum("5");         // TODO add your handling code here:
    }                                     


    private void jButton6MousePressed(java.awt.event.MouseEvent evt) {                                      
setNum("6");         // TODO add your handling code here:
    }                                     


    private void jButton7MousePressed(java.awt.event.MouseEvent evt) {                                      
setNum("7");         // TODO add your handling code here:
    }                                     


    private void jButton8MousePressed(java.awt.event.MouseEvent evt) {                                      
setNum("8");         // TODO add your handling code here:
    }                                     


    private void jButton9MousePressed(java.awt.event.MouseEvent evt) {                                      
      setNum("9");   //O add your handling code here:
    }                                     


    private void dianMousePressed(java.awt.event.MouseEvent evt) {                                  
setNum(".");         // TODO add your handling code here:
    }                                 
//将文本框内的数据设置为0,用于全部清空
    private void clearMousePressed(java.awt.event.MouseEvent evt) {                                   
jTextField1.setText("0");        // TODO add your handling code here:
    }                                  
//加减乘除的实现
    private void jiaMousePressed(java.awt.event.MouseEvent evt) {                                 
setYSF("+");         // TODO add your handling code here:
    }                                


    private void jianMousePressed(java.awt.event.MouseEvent evt) {                                  
setYSF("-");         // TODO add your handling code here:
    }                                 


    private void chuMousePressed(java.awt.event.MouseEvent evt) {                                 
setYSF("/");         // TODO add your handling code here:
    }                                
//等于
    private void dyMousePressed(java.awt.event.MouseEvent evt) {                                
      ScriptEngineManager manager=new ScriptEngineManager();
        ScriptEngine se = manager.getEngineByName("js"); 
        Double result =null;
        try {
            result=(Double) se.eval("("+jTextField1.getText()+")*1.0");
            
            
// TODO add your handling code here:
        } catch (ScriptException ex) {
            Logger.getLogger(jsj.class.getName()).log(Level.SEVERE, null, ex);
        jTextField1.setText("输入错误,重新输入");
        }
        jTextField1.setText(result.toString());
    }                               


    private void chengMousePressed(java.awt.event.MouseEvent evt) {                                   
   setYSF("*");     // TODO add your handling code here:
    }                                  


    private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {                                            
        // TODO add your handling code here:
    }                                           
//实现退格 用StringBuffer方法 如果str长度小于二就显示为0,否则就长度减一
    private void qcMousePressed(java.awt.event.MouseEvent evt) {                                
     String str=jTextField1.getText();
        StringBuffer strBuff=new StringBuffer(str);
        if (str.length()<2){jTextField1.setText("0");}
        else {
        strBuff.deleteCharAt(str.length()-1);
        jTextField1.setText(strBuff.toString());
                }  // TODO add your handling code here:
    }                               


    public void setYSF(String str){
    //取出当前显示的内容放入字符串变量strText中
    String strText = jTextField1.getText();
    //判断strText中字符串的最后一位是否为运算符
    int lastRight =strText.length()-1;
    char ch =strText.charAt(lastRight);
    if (ch =='+'|| ch=='-'|| ch=='/' || ch=='*'){
    //如果(){替换最右边的运算符为当前案件str。str放回文本框}否则{追加当前str‘}
    String strResult =strText.substring(0,lastRight)+str;
    //String strResult放回文本
jTextField1.setText(strResult);
    }
    else{
        jTextField1.setText(strText+str);
        //strText放回
    }
}


    /**
     * @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(jsj.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(jsj.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(jsj.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(jsj.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 jsj().setVisible(true);
            }
        });
    }

private javax.swing.JButton cheng;
    private javax.swing.JButton chu;
    private javax.swing.JButton clear;
    private javax.swing.JButton dian;
    private javax.swing.JButton dy;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton10;
    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.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 jTextField1;
    private javax.swing.JButton jia;
    private javax.swing.JButton jian;
    private javax.swing.JButton qc;
    // End of variables declaration                   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值