最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java簡(jiǎn)單模仿win10計(jì)算器

 更新時(shí)間:2020年02月22日 13:02:48   作者:waking-Java  
這篇文章主要為大家詳細(xì)介紹了java簡(jiǎn)單模仿win10計(jì)算器de,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Java實(shí)現(xiàn)win10計(jì)算器的具體代碼,供大家參考,具體內(nèi)容如下

這個(gè)小demo是我上學(xué)時(shí)的遠(yuǎn)古代碼(嘻嘻嘻),今天整理代碼時(shí)看到的,看著以前的代碼,突然感覺這些是啥?看不懂了都,而且寫得也不規(guī)范。

運(yùn)行一下,還是可以的,先截張圖

試了一下,bug還是有的,但是可以基本的運(yùn)算,有興趣的可以試一下

代碼就貼在這里:

package com.waking.call;


import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;


/**
 * 計(jì)算器小案例
 * @author waking
 *
 */
public class CalculatorExample {

 public static void main(String[] args) {
 // TODO Auto-generated method stub
 CalculatorFrame calculatorFrame=new CalculatorFrame();
 }
}
class CalculatorFrame extends JFrame{
 public CalculatorFrame() {//構(gòu)造函數(shù)
 setTitle("計(jì)算器");
 setSize(340,500);
 CalcultorPanel calcultorPanel=new CalcultorPanel();
 getContentPane().add(calcultorPanel);//給當(dāng)前Frame添加面板
 setLocationRelativeTo(null);//居中
 setDefaultCloseOperation(EXIT_ON_CLOSE);
 setVisible(true);
 }
}
class CalcultorPanel extends JPanel{//主面板
 public static boolean start=true;//新數(shù)字鍵輸入的開始
 public static String result="";//保存中間結(jié)果的參數(shù)
 public static String lastcommand="=";//記錄上一個(gè)運(yùn)算符
 public static boolean firstDigit = true;//輸入第一個(gè)數(shù)
 public CalcultorPanel() { 
 setLayout(new BorderLayout());
 ShowPanel showPanel=new ShowPanel();
 BTNPanel btnPanel=new BTNPanel();
 add(showPanel, BorderLayout.NORTH);
 add(btnPanel,BorderLayout.CENTER);
 } 
}
class ShowPanel extends JPanel{//結(jié)果面板
 public static JLabel display1;
 public static JLabel display2;
 public ShowPanel() {
 display1=new JLabel("",SwingConstants.RIGHT);
 display2=new JLabel("0",SwingConstants.RIGHT);
 display1.setFont(new Font("黑體",Font.BOLD,30));
 display2.setFont(new Font("黑體",Font.BOLD,40));
 display1.setPreferredSize(new Dimension(300, 80));
 display2.setPreferredSize(new Dimension(300, 50));
 setLayout(new BorderLayout());
 add(display1,BorderLayout.NORTH);
 add(display2,BorderLayout.CENTER);
 }
} 
class BTNPanel extends JPanel{//按鈕面板
 public BTNPanel() {
 setLayout(new GridLayout(6, 4));
 InsertAciton insertAciton=new InsertAciton();
 CommandAction commandAction=new CommandAction();
 addButton("%", commandAction);
 addButton("√", commandAction);
 addButton("pow", commandAction);
 addButton("1/x", commandAction);
 addButton("CE", commandAction);
 addButton("C", commandAction);
 addButton("<<", commandAction);
 addButton("/",commandAction);
 addButton("7",insertAciton);
 addButton("8",insertAciton);
 addButton("9",insertAciton);
 addButton("*",commandAction);
 addButton("4",insertAciton);
 addButton("5",insertAciton);
 addButton("6",insertAciton);
 addButton("-",commandAction);
 addButton("1",insertAciton);
 addButton("2",insertAciton);
 addButton("3",insertAciton);
 addButton("+",commandAction);
 addButton("+/-",commandAction);
 addButton("0",insertAciton);
 addButton(".",insertAciton);
 addButton("=",commandAction);
 
 }
 void addButton(String label,ActionListener actionListener) {//添加按鈕
 JButton button=new JButton(label);
 button.setFont(new Font("黑體",Font.BOLD,15));
 button.addActionListener(actionListener);
 add(button);
 }
}
class InsertAciton implements ActionListener{//數(shù)字鍵按鈕事件
 @Override
 
 public void actionPerformed(ActionEvent e) {
 // TODO Auto-generated method stub
 if(CalcultorPanel.start==true) {
 //清空文本
 ShowPanel.display1.setText("");
 ShowPanel.display2.setText("");
 CalcultorPanel.start=false;
 }
 if ("0123456789.".indexOf(e.getActionCommand()) >= 0) {
 if (CalcultorPanel.firstDigit) {
    // 輸入的第一個(gè)數(shù)字
 if(e.getActionCommand().equals(".")) {//如果第一個(gè)是“.”
 ShowPanel.display2.setText("0.");
  }else if(e.getActionCommand().equals("0")) {//如果第一個(gè)是“0”
  ShowPanel.display2.setText("0");
  CalcultorPanel.firstDigit=true;
  return;
  }
  else ShowPanel.display2.setText(e.getActionCommand());
 }
 else if ((e.getActionCommand().equals(".")) && (ShowPanel.display2.getText().indexOf(".") < 0)) {
   // 輸入的是小數(shù)點(diǎn),并且之前沒有小數(shù)點(diǎn),則將小數(shù)點(diǎn)附在結(jié)果文本框的后面
 ShowPanel.display2.setText(ShowPanel.display2.getText() + ".");
  } 
  else //if(Double.parseDouble(ShowPanel.display2.getText())!=0) 
  if (!e.getActionCommand().equals(".")) {
   // 如果輸入的不是小數(shù)點(diǎn),則將數(shù)字附在結(jié)果文本框的后面
   ShowPanel.display2.setText(ShowPanel.display2.getText() + e.getActionCommand());
  }
  // 以后輸入的肯定不是第一個(gè)數(shù)字了
 CalcultorPanel.firstDigit = false;
 }
 }
 
}
class CommandAction implements ActionListener{//功能事件

 public void actionPerformed(ActionEvent e) {
 // TODO Auto-generated method stub
 
 String string = e.getActionCommand();
 if(string.equals("CE")) {
 ShowPanel.display1.setText("");
 ShowPanel.display2.setText("0");
  }else if(string.equals("C")) {
   CalcultorPanel.start=true;//新數(shù)字鍵輸入的開始
   CalcultorPanel.result="";//保存中間結(jié)果的參數(shù)
   CalcultorPanel.lastcommand="=";//記錄上一個(gè)運(yùn)算符
   CalcultorPanel.firstDigit = true;//輸入第一個(gè)數(shù)
   ShowPanel.display1.setText("");
   ShowPanel.display2.setText("0");
  }else if(string.equals("<<")) {//退格
   ShowPanel.display1.setText("");
   String text=ShowPanel.display2.getText();
   int i = text.length();
    if (i > 0) {
     // 退格,將文本最后一個(gè)字符去掉
     text = text.substring(0, i - 1);
     if (text.length() == 0) {
      // 如果文本沒有了內(nèi)容,則初始化計(jì)算器的各種值
     ShowPanel.display2.setText("0");
     CalcultorPanel.firstDigit = true;
     CalcultorPanel.lastcommand = "=";
     } else {
      // 顯示新的文本
     ShowPanel.display2.setText(text);
     }
    }
   } else if(string.equals("+/-")) {
   String a1=ShowPanel.display2.getText();
   ShowPanel.display1.setText("");
   if(a1.indexOf("-")==-1) {
   if(Double.parseDouble(a1)!=0)
   ShowPanel.display2.setText("-"+ShowPanel.display2.getText());
   }
   else {
   ZeroText(Double.parseDouble(a1)*-1);
   }
 CalcultorPanel.result=a1;
   }else{
   CalcultorPanel.start=true;//新數(shù)字鍵的輸入
   if(CalcultorPanel.lastcommand.equals("=")) //做一次運(yùn)算
 { 
 CalcultorPanel.result=ShowPanel.display2.getText(); //獲取操作數(shù)1
 }
 else {
 if (CalcultorPanel.lastcommand.equals("%")) {
    // 百分號(hào)運(yùn)算,除以100
 double a1=Double.parseDouble(CalcultorPanel.result);
 a1= a1 / 100;
 if (CalcultorPanel.result=="0.") //去除0.問(wèn)題
  ShowPanel.display1.setText(0+"/100"+"=");
 else ShowPanel.display1.setText(CalcultorPanel.result+"/100=");
 ZeroText(a1);
 CalcultorPanel.result=a1+"";
   }else if (CalcultorPanel.lastcommand.equals("√")) {
    // 平方根運(yùn)算
   double a1=Double.parseDouble(CalcultorPanel.result);
    a1 = Math.sqrt(a1);
    if(CalcultorPanel.result=="0.")//去除0.問(wèn)題
    ShowPanel.display1.setText("√("+0+")"+"=");
    else ShowPanel.display1.setText("√"+"("+CalcultorPanel.result+")=");
    ZeroText(a1);
 CalcultorPanel.result=a1+"";
   }else if(CalcultorPanel.lastcommand.equals("pow")) {
   double a1=Double.parseDouble(CalcultorPanel.result);
   double a2=Double.parseDouble(ShowPanel.display2.getText());
   double s=Math.pow(a1,a2);
   if (CalcultorPanel.result=="0.") {//去除0.問(wèn)題
  if(ShowPanel.display2.getText()=="0.")
  ShowPanel.display1.setText("pow("+0+","+0+")"+"=");
  else ShowPanel.display1.setText("pow("+0+","+ShowPanel.display2.getText()+")"+"=");
 }else if(ShowPanel.display2.getText()=="0.") {
  ShowPanel.display1.setText("pow("+CalcultorPanel.result+","+0+")"+"=");
 }else 
   ShowPanel.display1.setText("pow"+"("+CalcultorPanel.result+","+ShowPanel.display2.getText()+")=");
   ZeroText(s);
 CalcultorPanel.result=a1+"";
   }else if (CalcultorPanel.lastcommand.equals("1/x")) {
    // 倒數(shù)運(yùn)算
   double a1=Double.parseDouble(CalcultorPanel.result);
    if (a1 == 0.0) {
     // 操作不合法
    ShowPanel.display2.setText("零沒有倒數(shù)");
    } else {
    a1 = 1 / a1;
    ShowPanel.display1.setText("1"+"/"+CalcultorPanel.result+"=");
    ZeroText(a1);
  CalcultorPanel.result=a1+"";
    }
   } 
 else if(CalcultorPanel.lastcommand.equals("+")) {
 double a1=Double.parseDouble(CalcultorPanel.result);
 double a2=Double.parseDouble(ShowPanel.display2.getText());
 double s=a1+a2;
 if (CalcultorPanel.result=="0.") {//去除0.問(wèn)題
  if(ShowPanel.display2.getText()=="0.")
  ShowPanel.display1.setText(0+"+"+0+"=");
  else ShowPanel.display1.setText(0+"+"+ShowPanel.display2.getText()+"=");
 }else if(ShowPanel.display2.getText()=="0.") {
  ShowPanel.display1.setText(CalcultorPanel.result+"+"+0+"=");
 }else 
 ShowPanel.display1.setText(CalcultorPanel.result+"+"+ShowPanel.display2.getText()+"=");
 ZeroText(s);
 CalcultorPanel.result=s+""; 
 }
 else if(CalcultorPanel.lastcommand.equals("-")) {
 double a1=Double.parseDouble(CalcultorPanel.result);
 double a2=Double.parseDouble(ShowPanel.display2.getText());
 double s=a1-a2;
 if (CalcultorPanel.result=="0.") {//去除0.問(wèn)題
  if(ShowPanel.display2.getText()=="0.")
  ShowPanel.display1.setText(0+"-"+0+"=");
  else ShowPanel.display1.setText(0+"-"+ShowPanel.display2.getText()+"=");
 }else if(ShowPanel.display2.getText()=="0.") {
  ShowPanel.display1.setText(CalcultorPanel.result+"-"+0+"=");
 }else 
 ShowPanel.display1.setText(CalcultorPanel.result+"-"+ShowPanel.display2.getText()+"=");
 ZeroText(s);
 CalcultorPanel.result=s+""; 
 }else if(CalcultorPanel.lastcommand.equals("*")) {
 double a1=Double.parseDouble(CalcultorPanel.result);
 double a2=Double.parseDouble(ShowPanel.display2.getText());
 double s=a1*a2;
 if (CalcultorPanel.result=="0.") {//去除0.問(wèn)題
  if(ShowPanel.display2.getText()=="0.")
  ShowPanel.display1.setText(0+"*"+0+"=");
  else ShowPanel.display1.setText(0+"*"+ShowPanel.display2.getText()+"=");
 }else if(ShowPanel.display2.getText()=="0.") {
  ShowPanel.display1.setText(CalcultorPanel.result+"*"+0+"=");
 }else 
 ShowPanel.display1.setText(CalcultorPanel.result+"*"+ShowPanel.display2.getText()+"=");
 ZeroText(s);
 CalcultorPanel.result=s+""; 
 }else if (CalcultorPanel.lastcommand.equals("/")) {
    // 除法運(yùn)算
    // 如果當(dāng)前結(jié)果文本框中的值等于0
 double a1=Double.parseDouble(CalcultorPanel.result);
 double a2=Double.parseDouble(ShowPanel.display2.getText());
    if (a2 == 0.0) {
     // 操作不合法
    ShowPanel.display2.setText("除數(shù)不能為零");
    } else {
    double s=a1/a2;
    if(CalcultorPanel.result=="0.")//去除0.問(wèn)題
    ShowPanel.display1.setText(0+"/"+ShowPanel.display2.getText()+"=");
    else ShowPanel.display1.setText(CalcultorPanel.result+"/"+ShowPanel.display2.getText()+"=");
  ZeroText(s);
  CalcultorPanel.result=s+""; 
    }
   } 
 } CalcultorPanel.lastcommand=e.getActionCommand();//獲取當(dāng)前的運(yùn)算符
 CalcultorPanel.firstDigit = true;
 }
} 
 public void ZeroText(double s) { 
 long t1;
 double t2;
 t1 = (long) s;
 t2 = s-t1;
 if (t2 == 0) {
 ShowPanel.display2.setText(String.valueOf(t1));
 } else {
 ShowPanel.display2.setText(String.valueOf(s));
 }   
 } 
}
  • 不要介意我把類寫在一起,因?yàn)槟菚r(shí)我為什么寫在一起,我現(xiàn)在也不知道了呀!
  • 有興趣的你可以研究研究,感謝您的觀看。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談vue中子組件傳值的默認(rèn)值情況

    淺談vue中子組件傳值的默認(rèn)值情況

    這篇文章主要介紹了淺談vue中子組件傳值的默認(rèn)值情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 啟動(dòng)SpringBoot報(bào)錯(cuò)Input length = 1問(wèn)題及解決

    啟動(dòng)SpringBoot報(bào)錯(cuò)Input length = 1問(wèn)題及解決

    這篇文章主要介紹了啟動(dòng)SpringBoot報(bào)錯(cuò)Input length = 1問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java線程變量ThreadLocal源碼分析

    Java線程變量ThreadLocal源碼分析

    ThreadLocal用來(lái)提供線程內(nèi)部的局部變量,不同的線程之間不會(huì)相互干擾,這種變量在多線程環(huán)境下訪問(wèn)時(shí)能保證各個(gè)線程的變量相對(duì)獨(dú)立于其他線程內(nèi)的變量,在線程的生命周期內(nèi)起作用,可以減少同一個(gè)線程內(nèi)多個(gè)函數(shù)或組件之間一些公共變量傳遞的復(fù)雜度
    2022-08-08
  • SpringBoot和Swagger結(jié)合提高API開發(fā)效率

    SpringBoot和Swagger結(jié)合提高API開發(fā)效率

    這篇文章主要介紹了SpringBoot和Swagger結(jié)合提高API開發(fā)效率的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • 使用Spring-Retry解決Spring Boot應(yīng)用程序中的重試問(wèn)題

    使用Spring-Retry解決Spring Boot應(yīng)用程序中的重試問(wèn)題

    重試的使用場(chǎng)景比較多,比如調(diào)用遠(yuǎn)程服務(wù)時(shí),由于網(wǎng)絡(luò)或者服務(wù)端響應(yīng)慢導(dǎo)致調(diào)用超時(shí),此時(shí)可以多重試幾次。用定時(shí)任務(wù)也可以實(shí)現(xiàn)重試的效果,但比較麻煩,用Spring Retry的話一個(gè)注解搞定所有,感興趣的可以了解一下
    2023-04-04
  • SpringMVC異常處理的三種方式小結(jié)

    SpringMVC異常處理的三種方式小結(jié)

    本文主要介紹了SpringMVC異常處理的三種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • 理解 MyBatis 是如何在 Spring 容器中初始化的

    理解 MyBatis 是如何在 Spring 容器中初始化的

    這篇文章主要介紹了理解 MyBatis 是如何在 Spring 容器中初始化的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 基于SpringBoot的SSMP的整合案例

    基于SpringBoot的SSMP的整合案例

    這篇文章主要介紹了SpringBoot整合SSMP的詳細(xì)教程,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Java:泛型知識(shí)知多少

    Java:泛型知識(shí)知多少

    這篇文章主要介紹了java泛型基礎(chǔ)知識(shí)及通用方法,從以下幾個(gè)方面介紹一下java的泛型: 基礎(chǔ), 泛型關(guān)鍵字, 泛型方法, 泛型類和接口,感興趣的可以了解一下
    2021-08-08
  • Spring中@Transactional用法詳細(xì)介紹

    Spring中@Transactional用法詳細(xì)介紹

    這篇文章主要介紹了Spring中@Transactional用法詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評(píng)論

富裕县| 巴彦县| 镇原县| 革吉县| 天长市| 华蓥市| 阳泉市| 凌云县| 博乐市| 鄂托克旗| 自治县| 阿拉善左旗| 大余县| 郯城县| 湄潭县| 米脂县| 电白县| 孝感市| 山阳县| 黔江区| 濮阳县| 古田县| 文水县| 大港区| 儋州市| 襄垣县| 湘西| 沈丘县| 桐乡市| 左云县| 天长市| 陈巴尔虎旗| 贵溪市| 乡宁县| 株洲市| 达拉特旗| 二连浩特市| 三门县| 琼海市| 临沧市| 兴安盟|