⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calcultor.java

📁 这是一个简单的计算器
💻 JAVA
字号:
/*
 * Calcultor.java
 *
 * Created on 2007年3月19日, 下午6:52
 */

/**
 *
 * @author  Administrator
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Calcultor
    extends JFrame
    implements ActionListener {

  /** Creates new form Calcultor */
  public Calcultor() {
    initComponents();
    this.setVisible(true);
  }

  /** 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.
   */
  // <editor-fold defaultstate="collapsed" desc=" 生成的代码 ">//GEN-BEGIN:initComponents
  private void initComponents() {
    cp = new javax.swing.JPanel();
    bds = new javax.swing.JLabel();
    intf = new javax.swing.JLabel();
    jdb = new javax.swing.JButton();
    num = new javax.swing.JPanel();
    jb7 = new javax.swing.JButton();
    jmb = new javax.swing.JMenuBar();
    bj = new javax.swing.JMenu();
    copy = new javax.swing.JMenuItem();
    bz = new javax.swing.JMenu();
    jsq = new javax.swing.JMenuItem();
    zn = new javax.swing.JMenuItem();

    getContentPane().setLayout(null);

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setTitle("\u8ba1\u7b97\u5668 by\u601d\u51e1");
    setResizable(false);
    cp.setLayout(null);

    bds.setBackground(java.awt.Color.white);
    bds.setToolTipText("<html><body><body  text=5>\u8fd9\u513f\u653e\u8ba1\u7b97\u8868\u8fbe\u5f0f\u3002<tr>\u4e0b\u8fb9\u663e\u793a\u7ed3\u679c</body></html>");
    bds.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.
        border.EtchedBorder.RAISED, null, new java.awt.Color(204, 204, 204)));
    bds.setOpaque(true);
    cp.add(bds);
    bds.setBounds(10, 10, 220, 20);

    intf.setBackground(java.awt.Color.white);
    intf.setToolTipText("<HTML>\u7528\u4e0b\u9762\u7684\u6309\u94ae\u8f93\u5165\u8868\u8fbe\u5f0f<tr>\u786e\u8ba4\u65e0\u8bef\u540e\u70b9\u51fb\u201cOK\u201d<tr>\u8fd9\u91cc\u5c06\u663e\u793a\u7ed3\u679c\u3002<tr>\u8ba1\u7b97\u5b8c\u6bd5\uff0c\u8bf7\u70b9\u51fb\u201cCE\u201d\u3002</html>");
    intf.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.
        border.EtchedBorder.RAISED, null, new java.awt.Color(204, 204, 204)));
    intf.setOpaque(true);
    cp.add(intf);
    intf.setBounds(10, 30, 220, 40);

    jdb.setText("CE");
    jdb.setToolTipText("CE");
    jdb.addActionListener(this);

    cp.add(jdb);
    jdb.setBounds(240, 10, 50, 60);

    getContentPane().add(cp);
    cp.setBounds(10, 0, 300, 80);

    num.setLayout(new java.awt.GridLayout(4, 4, 3, 3));

    jb7.setText("7");
    jb7.setToolTipText("7");
    jb7.addActionListener(this);
    num.add(jb7);

    for (int i = 0; i < 19; i++) {
      l = m[i].indexOf(" ");
      n = m[i].substring(0, l);
      jb7 = new JButton(n);
      jb7.setToolTipText(m[i].substring(l + 1));
      jb7.addActionListener(this);
      if (i < 18) {
        num.add(jb7);
      }
    }

    num.add(jb7);

    getContentPane().add(num);
    num.setBounds(20, 80, 280, 140);

    bj.setText("\u7f16\u8f91");
    copy.setText("\u4fdd\u5b58\u7ed3\u679c");
    copy.addActionListener(this);
    bj.add(copy);

    jmb.add(bj);

    bz.setText("\u5e2e\u52a9");
    jsq.setText("\u5173\u4e8e\u8ba1\u7b97\u5668");
    jsq.addActionListener(this);
    bz.add(jsq);

    zn.setText("\u64cd\u4f5c\u6307\u5357");
    zn.addActionListener(this);
    bz.add(zn);

    jmb.add(bz);

    setJMenuBar(jmb);

    java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().
        getScreenSize();
    setBounds( (screenSize.width - 324) / 2, (screenSize.height - 291) / 2, 324,
              291);
  } // </editor-fold>//GEN-END:initComponents

//        intf.setForeground(Color.BLACK);
//        str=intf.getText();
//        str+=8;
//        intf.setText(str);
//        str="";// TODO 将在此处添加您的处理代码:

  //show message1
  private void jsq() {
    JOptionPane.showMessageDialog(this, "<html>本计算机是由思凡科技创新小组创作。:<table><tr>" +
        "\t成员如下<ul><li>王  飞   肖超伟</li><li>宋广超   王京富</li><li>王  飞   宋  矿</li>" +
        "   <tr>组长:王  飞" +
        "<tr>联系方式:15969712195 " +
        "<tr>Email:bingdao@mail.sdu.edu.cn<table></html>");
    // l.setIcon(new ImageIcon("img28.jpg"));

// TODO 将在此处添加您的处理代码:
  }

  //show message2
  private void zn() {
    JOptionPane.showMessageDialog(this, "请参照按钮上的提示来操作!!!");
  }

  private void jbe() {
    str = intf.getText();
    s = bds.getText();
    bds.setText(s + str);
    str = "";
    intf.setText(str);
    s = bds.getText();
    houzui m = new houzui();
    String ds = m.outResult(s + " &");
    if (ds.charAt(0) == 'E') {
      intf.setForeground(Color.RED);
      //ds+="  (计算完毕,请点击“CE”。)";
    }
    intf.setText(ds);
    exe = true;
  }

  private void jdb() {
    intf.setText("");
    bds.setText("");
    exe = false;
    // TODO 将在此处添加您的处理代码:
  }

  private void jbb() {
    if(e()==-1)return;
    str = intf.getText();
    s = bds.getText();
    if (str.length() > 0) {
      str = str.substring(0, str.length() - 1);
      intf.setText(str);
    }
    else if (s.length() > 0) {
      if (s.charAt(s.length() - 1) != ' ') {
        s = s.substring(0, s.length() - 1);
      }
      else {
        s = s.substring(0, s.length() - 3);
      }
      bds.setText(s);
    }
    s = "";
// TODO 将在此处添加您的处理代码:
  }

  private void jbd() {
    e();
    str = intf.getText();
    str += ".";
    intf.setText(str);
    str = ""; // TODO 将在此处添加您的处理代码:
  }

  int e(){
    if(intf.getText().equals("输负数要先输数字!!!"))
      {intf.setText("");return -1;}
    return 0;
  }

  private void jbC() {
    e();
    str = intf.getText();
    char l=' ';
    if(str.length()==0){
       intf.setText("输负数要先输数字!!!");
       return;
     }
    else l=str.charAt(0);
    if (l == '-') {
      str = str.substring(1);
    }
    else if(Character.isDigit(l)){
      str = '-' + str;
    }

    intf.setText(str);
    s = ""; // TODO 将在此处添加您的处理代码:
  }

  private void copy() {

    File file = new File("m\\result.txt");
    PrintWriter out = null;
    try {
      out =
          new PrintWriter(new FileOutputStream(file, true));

    }
    catch (FileNotFoundException ex) {
      ex.printStackTrace();
    }
    s = bds.getText();
    str = intf.getText();
    out.println(s + " = " + str);
    s = "";
    str = "";
    out.close();

    JOptionPane.showMessageDialog(this, "结果保存在该计算器所在的文件夹内result.txt文件中。");
// TODO 将在此处添加您的处理代码:
  }

//    public static void main(String[] args) {
//        Calcultor m=new Calcultor();
//        m.setVisible(true);
//    }

  public void actionPerformed(ActionEvent e) {

    String d = e.getActionCommand();
    char f = d.charAt(0);
    if (d.equals("保存结果")) {
      copy();
    }
    else if (d.equals("关于计算器")) {
      jsq();
    }
    else if (d.equals("操作指南")) {
      zn();
    }
    if (exe && f != 'C') {
      intf.setText("请先电击CE。");
    }
    else if (f == 'C') {
      jdb();
      intf.setForeground(null);
    }
    else {
      if (Character.isDigit(f)) {
        e();
        str = intf.getText();
        str += d;
        intf.setText(str);
        str = "";
      }
      else if (f == '(' || f == ')' || f == '+' || f == '-' || f == '*' ||
               f == '/') {
        if (d.length() > 1 && d.charAt(1) == '/') {
          jbC();
        }
        else {
          str = intf.getText();
          str += " " + f + " ";
          s = bds.getText();
          bds.setText(s + str);
          str = "";
          intf.setText(str);
          s = "";
        }
      }
      else if (f == '.') {
        jbd();
      }
      else if (f == '<') {
        jbb();
      }
      else if (f == 'O') {
        jbe();
      }
    }
  }

  /**
   * @param args the command line arguments
   */

  // 变量声明 - 不进行修改//GEN-BEGIN:variables
  private javax.swing.JLabel bds;
  private javax.swing.JMenu bj;
  private javax.swing.JMenu bz;
  private javax.swing.JMenuItem copy;
  private javax.swing.JPanel cp;
  private javax.swing.JLabel intf;
  private javax.swing.JButton jb7;
  private javax.swing.JButton jdb;
  private javax.swing.JMenuBar jmb;
  private javax.swing.JMenuItem jsq;
  private javax.swing.JPanel num;
  private javax.swing.JMenuItem zn;
  // 变量声明结束//GEN-END:variables

  String str = "", s = "";

  //用来标示button的数组,并赋值
  String[] m = new String[19];
  {
    m[0] = "8 8";
    m[1] = "9 9";
    m[2] = "( 左括号 (";
    m[3] = ") 右括号 )";
    m[4] = "4 4";
    m[5] = "5 5";
    m[6] = "6 6";
    m[7] = "* 乘号 *";
    m[8] = "/ 除号 /";
    m[9] = "1 1";
    m[10] = "2 2";
    m[11] = "3 3";
    m[12] = "+ 加号 +";
    m[13] = "- 减号 -";
    m[14] = "0 0";
    m[15] = "+/- <html>先写数字后按此按钮,<tr>改变数据正负号</html>";
    m[16] = ". 小数点 .";
    m[17] = "<= 后退";
    m[18] = "OK 确认";
  }

  //赋值结束

  String n = ""; //取出button标签
  int l = 0; //用来装第一个空格的位置
  boolean exe = false;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -