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

java實(shí)現(xiàn)圖形化界面計(jì)算器

 更新時(shí)間:2020年05月18日 17:13:49   作者:PayneWoo  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖形化界面計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

最終效果圖:

項(xiàng)目流程:

第一步:實(shí)現(xiàn)圖形化界面(添加計(jì)算器的 Button 和 用于顯示輸入數(shù)字、輸出結(jié)果的JTextField等)

第二步:給按鈕和文本框添加鼠標(biāo)監(jiān)聽事件。

第三步:實(shí)現(xiàn)加減乘除、開方、平方、清零和退格功能。

開方運(yùn)算:

平方運(yùn)算:

加法運(yùn)算:

減法運(yùn)算:

乘法運(yùn)算:

除法運(yùn)算:

完整項(xiàng)目代碼:

package First_App;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Caculator extends JFrame{
 /*
  * 圖形化界面設(shè)計(jì)
  * */
 private static final long serialVersionUID = 4907149509182425824L;
 public Caculator(){
  Container c = getContentPane(); //定義一個(gè)頂級(jí)容器c
  setLayout(new GridLayout(2,1));//新建網(wǎng)格布局管理器,2行1列
  JTextField jtf = new JTextField("0",40);//構(gòu)造一個(gè)用指定文本和列初始化的新文本框--jtf
   jtf.setHorizontalAlignment(JTextField.RIGHT);//設(shè)置水平對(duì)齊方式:居右對(duì)齊
  JButton data0 = new JButton("0");
  JButton data1 = new JButton("1");
  JButton data2 = new JButton("2");
  JButton data3 = new JButton("3");
  JButton data4 = new JButton("4");
  JButton data5 = new JButton("5");
  JButton data6 = new JButton("6");
  JButton data7 = new JButton("7");
  JButton data8 = new JButton("8");
  JButton data9 = new JButton("9");
  JButton point = new JButton(".");
  JButton equ = new JButton("=");
  JButton plus = new JButton("+");
  JButton minus = new JButton("-");
  JButton mtp = new JButton("*");
  JButton dvd = new JButton("/");
  JButton sqr = new JButton("sqrt");
  JButton root = new JButton("x^2");
  JButton tg = new JButton("退格");
  JButton ql = new JButton("清零");
  JPanel jp = new JPanel(); //新建JPanel面板--jp
  jp.setLayout(new GridLayout(4,5,5,5));//新建網(wǎng)格布局管理器(行數(shù),列數(shù),組件間的水平垂直間距)
  jp.add(data7);
  jp.add(data8);
  jp.add(data9);
  jp.add(plus);
  jp.add(sqr);
  jp.add(data4);
  jp.add(data5);
  jp.add(data6);
  jp.add(minus);
  jp.add(root);
  jp.add(data1);
  jp.add(data2);
  jp.add(data3);
  jp.add(mtp);
  jp.add(ql);
  jp.add(data0);
  jp.add(point);
  jp.add(equ);
  jp.add(dvd);
  jp.add(tg);
  c.add(jtf);//將文本框jtf添加到頂級(jí)容器c中
  c.add(jp);//將JPanel面板jp添加到頂級(jí)容器c中
  setSize(400,300);
  setTitle("計(jì)算器");
  setVisible(true);
  setResizable(false);//窗體大小由程序員決定,用戶不能自由改變大小
  setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

  /*
   * *********************************************************
   *     
     相關(guān)計(jì)算功能的實(shí)現(xiàn)        
   * *********************************************************
   * */

  data0.addActionListener(new ActionListener(){//數(shù)字0的輸入
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){//將按鈕值與0作比較
     jtf.requestFocus();//把輸入焦點(diǎn)放在調(diào)用這個(gè)方法的控件上(即把光標(biāo)放在文本框jtf里)
    }
    else{
     String str = jtf.getText();//取得當(dāng)前按鈕的按鈕值
     jtf.setText(str+"0"); //將文本內(nèi)容后加上字符0
    }
   }
  });
  data1.addActionListener(new ActionListener(){//數(shù)字1的輸入
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){//將按鈕值與0作比較
     jtf.setText("");//將文本框初始化為空
     jtf.setText("1");//將文本框內(nèi)容置為 1
     jtf.requestFocus();//把輸入焦點(diǎn)放在調(diào)用這個(gè)方法的控件上(即把光標(biāo)放在文本框jtf里)
    }
    else{
     String str = jtf.getText();//取得當(dāng)前按鈕的按鈕值
     jtf.setText(str+"1"); //將文本內(nèi)容后加上字符1
    }
   }
  });
  data2.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("2");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"2");
    }
   }
  });
  data3.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("3");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"3");
    }
   }
  });
  data4.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("4");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"4");
    }
   }
  });
  data5.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("5");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"5");
    }
   }
  });
  data6.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("6");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"6");
    }
   }
  });
  data7.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("7");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"7");
    }
   }
  });
  data8.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("8");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"8");
    }
   }
  });
  data9.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("9");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"9");
    }
   }
  });
  point.addActionListener(new ActionListener(){ //點(diǎn)號(hào)的輸入
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText(".");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+".");
    }
   }
  });
  plus.addActionListener(new ActionListener(){ //+號(hào)的輸入
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("+");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"+");
    }
   }
  });
  minus.addActionListener(new ActionListener(){ //-號(hào)的輸入
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("-");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"-");
    }
   }
  });
  mtp.addActionListener(new ActionListener(){ //*號(hào)的輸入
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("*");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"*");
    }
   }
  });
  dvd.addActionListener(new ActionListener(){ //除號(hào)的輸入
   public void actionPerformed(ActionEvent arg0){
    if(jtf.getText().equals("0")){
     jtf.setText("");
     jtf.setText("/");
     jtf.requestFocus();
    }
    else{
     String str = jtf.getText();
     jtf.setText(str+"/");
    }
   }
  });
  //【**退格功能如下**】
  tg.addActionListener(new ActionListener(){//監(jiān)聽退格鍵
   public void actionPerformed(ActionEvent arg0){//處理退格鍵被按下的事件
    String text = jtf.getText();
    int i = text.length();
    if(i>0){
     text = text.substring(0,i-1);//去掉最后一個(gè)字符
     if (text.length() == 0) {// 如果文本沒(méi)有了內(nèi)容,則初始化計(jì)算器的各種值
      jtf.setText("0");
     } else { // 顯示新的文本
      jtf.setText(text);
    }
   }
   }
  });
  //【**清零功能如下**】
  ql.addActionListener(new ActionListener(){//監(jiān)聽清零鍵
   public void actionPerformed(ActionEvent e) {
    jtf.setText("0");//將文本框置為0(清零功能)
   }

  });
  //【**平方功能如下**】
  root.addActionListener(new ActionListener(){//監(jiān)聽root鍵
   public void actionPerformed(ActionEvent e){//root鍵被按事件
    String i = jtf.getText();
    Double j = Double.parseDouble(i);//將字符串i轉(zhuǎn)換成對(duì)應(yīng)的double類型的數(shù)值
    double ans = j*j; //求平方
    String answer =String.valueOf(ans);//將int型數(shù)據(jù)轉(zhuǎn)換成String類型
    jtf.setText(answer);//將文本框設(shè)置為平方后的結(jié)果
   }
  });
  //【**開方功能如下**】
  sqr.addActionListener(new ActionListener(){//監(jiān)聽sqrt鍵
   public void actionPerformed(ActionEvent e){//sqrt鍵被按事件
    String i = jtf.getText();
    Double j = Double.parseDouble(i);//將字符串轉(zhuǎn)換成對(duì)應(yīng)的double類型的數(shù)值
    double ans = (double)Math.sqrt(j);//求開方
    String answer = String.valueOf(ans);//將double型數(shù)據(jù)轉(zhuǎn)換成String類型
    jtf.setText(answer);//將文本框設(shè)置為開方后的結(jié)果
   }
  });

  //【等號(hào)實(shí)現(xiàn) 加減乘除 功能】
  equ.addActionListener(new ActionListener(){ //監(jiān)聽 “等號(hào)” 按鍵
   public void actionPerformed(ActionEvent arg0){//處理“等號(hào)” 按鍵被按下事件
    //【**加法運(yùn)算**】
    if(jtf.getText().indexOf("+")!= -1){
     //將字符串分割為子字符串,然后將結(jié)果作為字符串?dāng)?shù)組返回
     String[] s = jtf.getText().split("[+]");//轉(zhuǎn)義字符,要用"[+]"或者"\+"
     Double d1 = Double.parseDouble(s[0]);//返回一個(gè)指定字符串表示的double值
     Double d2 = Double.parseDouble(s[1]);
     double ans = d1 + d2;
     String answer = String.valueOf(ans);//將結(jié)果轉(zhuǎn)換為字符串
     jtf.setText(answer);//將加法運(yùn)算的結(jié)果以字符串形式在文本框中顯示
    }
    //【**減法運(yùn)算**】
    else if(jtf.getText().indexOf("-")!= -1){
     String[] s = jtf.getText().split("-");
     jtf.setText("");
     Double d1 = Double.parseDouble(s[0]);
     Double d2 = Double.parseDouble(s[1]);
     double ans = d1-d2;
     String answer =String.valueOf(ans);
     jtf.setText(answer);
    }
    //【**乘法運(yùn)算**】
    else if(jtf.getText().indexOf("*")!= -1){
     String[] s = jtf.getText().split("[*]");//*是轉(zhuǎn)義字符,要用"[*]",或者"\*"
     jtf.setText("");
     Double d1 = Double.parseDouble(s[0]);
     Double d2 = Double.parseDouble(s[1]);
     double ans = d1*d2;
     String answer =String.valueOf(ans);
     jtf.setText(answer);
    }
    //【**除法運(yùn)算**】
    else if(jtf.getText().indexOf("/")!= -1){
     String[] s = jtf.getText().split("/");
     jtf.setText("");
     Double d1 = Double.parseDouble(s[0]);
     Double d2 = Double.parseDouble(s[1]);
     double ans = d1/d2;
     String answer =String.valueOf(ans);
     jtf.setText(answer);
    }
    else{
     jtf.setText("請(qǐng)選擇要進(jìn)行的運(yùn)算");
    }
   }
  });
 }
 public static void main(String[] args) {
  new Caculator();
 }
}

總結(jié):

1.掌握基本的GUI添加按鈕、文本框的方法
2.掌握字符串的處理,這里用到了indexOf()、split()等方法
3.注意Java中遇到的轉(zhuǎn)義字符。

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

相關(guān)文章

  • Java Validation Api使用方法實(shí)例解析

    Java Validation Api使用方法實(shí)例解析

    這篇文章主要介紹了Java Validation Api使用方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 手寫mybatis完整sql插件問(wèn)題及實(shí)現(xiàn)思路

    手寫mybatis完整sql插件問(wèn)題及實(shí)現(xiàn)思路

    大家在使用mybatis的過(guò)程中,mysql日志功能一般不會(huì)直接放到數(shù)據(jù)庫(kù)中執(zhí)行的,今天小編重點(diǎn)給大家分享手寫mybatis完整sql插件問(wèn)題及實(shí)現(xiàn)思路,對(duì)mybatis完整sql插件相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-05-05
  • SpringBoot實(shí)現(xiàn)自定義條件注解的代碼示例

    SpringBoot實(shí)現(xiàn)自定義條件注解的代碼示例

    在Spring Boot中,條件注解是一種非常強(qiáng)大的工具,它可以根據(jù)特定的條件來(lái)選擇是否加載某個(gè)類或某個(gè)Bean,文將介紹如何在Spring Boot中實(shí)現(xiàn)自定義條件注解,并提供一個(gè)示例代碼,需要的朋友可以參考下
    2023-06-06
  • Spring Security方法鑒權(quán)的實(shí)現(xiàn)

    Spring Security方法鑒權(quán)的實(shí)現(xiàn)

    在Spring Security中,主要有兩種鑒權(quán)方式,一個(gè)是基于web請(qǐng)求的鑒權(quán),一個(gè)是基于方法的鑒權(quán),本文就來(lái)介紹一下Spring Security方法鑒權(quán)的實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • SpringBoot+jpa配置如何根據(jù)實(shí)體類自動(dòng)創(chuàng)建表

    SpringBoot+jpa配置如何根據(jù)實(shí)體類自動(dòng)創(chuàng)建表

    這篇文章主要介紹了SpringBoot+jpa配置如何根據(jù)實(shí)體類自動(dòng)創(chuàng)建表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • 使用springboot結(jié)合vue實(shí)現(xiàn)sso單點(diǎn)登錄

    使用springboot結(jié)合vue實(shí)現(xiàn)sso單點(diǎn)登錄

    這篇文章主要為大家詳細(xì)介紹了如何使用springboot+vue實(shí)現(xiàn)sso單點(diǎn)登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • java.lang.OutOfMemoryError 錯(cuò)誤整理及解決辦法

    java.lang.OutOfMemoryError 錯(cuò)誤整理及解決辦法

    這篇文章主要介紹了java.lang.OutOfMemoryError 錯(cuò)誤整理及解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 解決引用jip-common jar包,報(bào)401 Unauthorized錯(cuò)誤問(wèn)題

    解決引用jip-common jar包,報(bào)401 Unauthorized錯(cuò)誤問(wèn)題

    這篇文章主要介紹了解決引用jip-common jar包,報(bào)401 Unauthorized錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別

    淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別

    本文主要介紹了淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?hr?and?body

    解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?

    這篇文章主要給大家介紹了關(guān)于如何解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?hr?and?body的相關(guān)資料,文中將解決的辦法通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01

最新評(píng)論

大荔县| 永济市| 宁陕县| 汉川市| 崇州市| 从江县| 阳信县| 合肥市| 新建县| 宁蒗| 华坪县| 安化县| 错那县| 江西省| 淳安县| 铜梁县| 常宁市| 鲜城| 黄骅市| 哈巴河县| 申扎县| 定边县| 黑山县| 九龙县| 聊城市| 凉城县| 正定县| 合作市| 湖南省| 河池市| 噶尔县| 桓台县| 来宾市| 安徽省| 海原县| 洛浦县| 刚察县| 九龙城区| 石屏县| 曲阳县| 江西省|