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

📄 mframe.java~353~

📁 JAVA做的计算器 十分和WINDOWS自带的相似
💻 JAVA~353~
📖 第 1 页 / 共 3 页
字号:
    contentPane.add(Fen, new XYConstraints(224, 139, 37, 29));
    contentPane.add(MS, new XYConstraints(10, 139, 37, 29));
    contentPane.add(Six, new XYConstraints(140, 105, 37, 29));
    contentPane.add(Jia, new XYConstraints(182, 172, 37, 29));
    contentPane.add(Four, new XYConstraints(56, 105, 37, 29));
    contentPane.add(Eight, new XYConstraints(98, 72, 37, 29));
    contentPane.add(Nine, new XYConstraints(140, 72, 37, 29));
    contentPane.add(Chu, new XYConstraints(182, 72, 37, 29));
    contentPane.add(Sqrt, new XYConstraints(224, 72, 37, 29));
    contentPane.add(C, new XYConstraints(201, 37, 60, 29));
    contentPane.add(CE, new XYConstraints(135, 37, 60, 29));
    contentPane.add(BaSp, new XYConstraints(57, 37, 72, 29));
    contentPane.add(Mshow, new XYConstraints(11, 42, 32, 23));
    MainMenu.add(Edit);
    MainMenu.add(View);
    MainMenu.add(Help);
    Edit.add(Copyx);
    Edit.add(Pastex);
    Help.add(Aboutx);
    View.add(Fenzux);
  }

  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void MC_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else{
    Mshow.setText("");
    memorys = "";} //清空寄存器
  }

  void MS_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else{
    Mshow.setText("M");
    memorys = Text.getText();} //获取Text内容
  }

  void MJ_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else{
      Mshow.setText("M");
      memorys = String.valueOf(Double.parseDouble(memorys) +
      Double.parseDouble(Text.getText()));
}
} //String.valueOf转换类型,Double.parseDouble将String转换成double

//将当前Text里的数值与寄存器里相家并再放入寄存器

  void MR_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else
    TextShow(memorys); //将寄存器放入Text
  }

  void BaSp_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else {
        String tem;
        tem = Text.getText();
        if (tem.substring(tem.length() - 1, tem.length()).equals(".")) { //如果最后为"."(其实是判断是不是小数)
          if (tem.length() == 2) { //如果Text里字符串不大于2也就是"x."的时候
            TextShow("0.");
            flagdot = false; //还原小数点
          }
          else {
            if (FZ){
              tem = tem.substring(0, tem.length() - 2)+".";
              tem=tem.replaceAll(",","");
              Fenzu(tem);
            }
            else{
              tem = tem.substring(0, tem.length() - 2);
              TextShow(tem + ".");
            }
          } //保证小数点一直在最后面
        }
        else {
          if (FZ){
          tem = tem.substring(0, tem.length() - 1);
          tem=tem.replaceAll(",","");
          Fenzu(tem);
          }
          else{
            tem = tem.substring(0, tem.length() - 1);
            TextShow(tem);
          }
        }
      }
  }
  /////////////////////////////////


///////////////////////////////////////////
  void Chu_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else{
    linshi = Double.parseDouble(Text.getText().replaceAll(",",""));
    flag = 1;
    flagchuli = true;}
  }

  void Chen_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else{
    linshi = Double.parseDouble(Text.getText().replaceAll(",",""));
    flag = 2;
    flagchuli = true;}
  }

  void Jian_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else{
    linshi = Double.parseDouble(Text.getText().replaceAll(",",""));
    flag = 3;
    flagchuli = true;}
  }

  void Jia_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else{
    linshi = Double.parseDouble(Text.getText().replaceAll(",",""));
    flag = 4;
    flagchuli = true;}
  }

  void Deng_actionPerformed(ActionEvent e) {
    String tem;
    if (Lock) {}
    else {
      switch (flag) {
        case 1: //除
          tem = String.valueOf(linshi / Double.parseDouble(Text.getText()));
          if (FZ)
            Fenzu(tem);
          else
            TextShow(tem);
          break;
        case 2: //乘
          tem = String.valueOf(linshi * Double.parseDouble(Text.getText()));
          if (FZ)
            Fenzu(tem);
          else
            TextShow(tem);
          break;
        case 3: //减
          tem = String.valueOf(linshi - Double.parseDouble(Text.getText()));
          if (FZ)
            Fenzu(tem);
          else
            TextShow(tem);
          break;
        case 4: //加
          tem = String.valueOf(linshi + Double.parseDouble(Text.getText()));
          if (FZ)
            Fenzu(tem);
          else
            TextShow(tem);
          break;
      }
}
}

void  Fenzu(String strs){
  String tem1;
  String tem2;
  String tem3="";//用来存放小数点后面多少个0,为什么要这样?
                 //因为DecimalFormat("0,000."+tem3);后的tem3决定着真实的数值,避免四舍五入
  int inde;
  inde = strs.indexOf('.', 0); //取小数点在字符串里的的index值
  tem1=strs.substring(0,inde);
  if (tem1.length() < 4)
      TextShow(strs);
    else {
        //如果小数点在最后也就是非小数时候
        tem2=strs.substring(inde+1,strs.length());
        for (int j=0;j<tem2.length();j++)
          tem3=tem3+"0";
        DecimalFormat tem = new DecimalFormat("0,000."+tem3);
        TextShow(tem.format(Double.parseDouble(strs)));
    }
  }



  void Shuru(int Capti) {
    String tem;
    String tem2;
    tem = Text.getText();
    if (Lock) {}//如果被锁什么都不做
    else {
      if (flagchuli) {//如果按了+-/*
        tem2=(String.valueOf(Capti) + ".");
        flagchuli = false; //初始化
      }
      else {
        if (flagdot) //如果按了"."直接在最后面加输入的数字
          tem2=Text.getText() + String.valueOf(Capti);
        else {
          if (tem.substring(0, 1).equals("0")) { //如果当前为"0.",把"0"替换成刚输入的数字
            tem = tem.substring(1, tem.length() - 1);
            tem2=tem + String.valueOf(Capti) + ".";
          }
          else {
            tem = tem.substring(0, tem.length() - 1); //去掉"."
            tem2=tem + String.valueOf(Capti) + ".";
          }
        } //再最后加上刚才输入的数字再加个"."
      }
      if (FZ){
        tem2=tem2.replaceAll(",","");
        Fenzu(tem2);
      }
      else
      TextShow(tem2);
    }
  }

  void TextShow(String Neirong) { //处理字符串似的效果接近window自带的
    for (int i = 0; i < Neirong.length(); i++) {
      if ( (Neirong.charAt(i) >= 48 && Neirong.charAt(i) <= 57)) { //判断复制过来的内容是否是纯数字
        String tem;
        int inde;
        inde = Neirong.indexOf('.', 0); //取小数点在字符串里的的index值
        if (inde == ( -1)) //如果没有小数点
          Text.setText(Neirong + "."); //最后加个点
        else { //如果有
          if (Neirong.substring(Neirong.length() - 1,Neirong.length()).equals(".")) { //如果在最后
            Text.setText(Neirong); //直接显示
          }
          else { //在中间的话
            tem = Neirong.substring(Neirong.length() - 1, Neirong.length());
            if (tem.equals("0")) //如果最后一个是0的话(除类似1.0的没有别的可能例如1.00)
              Text.setText(Neirong.substring(0, inde) + "."); //把包括小数点后的字符串全去了再加个"."
            else
              Text.setText(Neirong);
          }
        }
      }
    }
  }
  void Dot_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else
    flagdot = true;
  }

  void Zero_actionPerformed(ActionEvent e) {
    Shuru(0);
  }

  void One_actionPerformed(ActionEvent e) {
    Shuru(1);
  }

  void Two_actionPerformed(ActionEvent e) {
    Shuru(2);
  }

  void Three_actionPerformed(ActionEvent e) {
    Shuru(3);
  }

  void Four_actionPerformed(ActionEvent e) {
    Shuru(4);
  }

  void Five_actionPerformed(ActionEvent e) {
    Shuru(5);
  }

  void Six_actionPerformed(ActionEvent e) {
    Shuru(6);
  }

  void Sever_actionPerformed(ActionEvent e) {
    Shuru(7);
  }

  void Eight_actionPerformed(ActionEvent e) {
    Shuru(8);
  }

  void Nine_actionPerformed(ActionEvent e) {
    Shuru(9);
  }

  void C_actionPerformed(ActionEvent e) {

    Text.setText("0.");
    flagdot = false; //判断是否按了"."
    boolean flagchuli = false;
    flag = 0;
    Lock = false;
  }

  void CE_actionPerformed(ActionEvent e) {

    flagchuli = true;
    Lock = false;
  }

  void Sqrt_actionPerformed(ActionEvent e) { //开方
    if (Lock) {}
    else{
    Fenzu(String.valueOf(Math.sqrt(Double.parseDouble(Text.getText().replaceAll(",","")))));}
  }

  void Baifen_actionPerformed(ActionEvent e) { //百分号功能
    double tem;
    tem=Double.parseDouble(Text.getText().replaceAll(",","")) / 100;
    if (Lock) {}
    else {
      switch (flag) {
        case 1:
          Fenzu(String.valueOf(linshi /tem));
          break;
        case 2:
         Fenzu(String.valueOf(linshi *tem));
          break;
        case 3:
          Fenzu(String.valueOf(tem));
          break;
        case 4:
          Fenzu(String.valueOf(tem));
          break;
      }
    }
  }

  void Fen_actionPerformed(ActionEvent e) {

    String tem;
    tem = Text.getText();
    if (tem.substring(0, tem.length()).equals("0.")) {
      Text.setText("除数不能为零。");
      Lock = true;
    }
    else
    if (tem.substring(0, tem.length()).equals("除数不能为零。"))
      Text.setText("除数不能为零。");
    else {
      Fenzu(String.valueOf(1 / (Double.parseDouble(Text.getText().replaceAll(",","")))));
    }
  }

  void JJ_actionPerformed(ActionEvent e) {
    if (Lock) {}
    else {
      String tem;
      tem = Text.getText();
      if (!tem.substring(0, 1).equals("0")) { //判断是不是0,是的话没必要,0没有正负
      TextShow(String.valueOf(-Double.parseDouble(tem)));
      }
    }

⌨️ 快捷键说明

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