找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2777|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

用JAVA程序編寫簡單計算器

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:361500 發(fā)表于 2018-12-31 11:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
package jisuanji;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

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

import javax.accessibility.AccessibleAction;
import javax.swing.JButton;
import javax.swing.JTextField;
public class jisuanjicalc extends JFrame{
        JButton equalJB,divJB,button0JB,button1JB,button2JB,button3JB,button4JB,button5JB,button6JB,
        button7JB,button8JB,button9JB,addJB,subJB,mulJB,dotJB,CEJB,EXITJB,bsJB;//窗口組件(按鈕)
        JButton numJB[]=new JButton[10];
        JPanel panelJP,panel2JP,panel3JP;//定義面板
        JLabel equalJL,errorJL;//創(chuàng)造窗口需要顯示組件
        JTextField num1JT;
        //GUI開發(fā)+的一般步驟:
        //1.創(chuàng)建窗口類,繼承自JFrame
        //2.定義相關(guān)組件的引用名(包括面板的引用名)
        //3.在構(gòu)造器方法中創(chuàng)建組件對象并且與引用名關(guān)聯(lián)。
        //4.創(chuàng)建面板,將將組件添加到面板(中間容器)
        //5.將面板,添加到窗口(頂層容器)
        //6.設(shè)置窗口大小,可見性,標(biāo)題欄……  (詳細(xì),仔細(xì)參考JDK文檔 )
        //7.創(chuàng)建內(nèi)部類(組件的事件響應(yīng)代碼)
        //8.添加相應(yīng)組件的事件監(jiān)聽

        double a=0,b=0,c;
        boolean dotflag=false;
        String operator;
        public jisuanjicalc() {
                errorJL=new JLabel("");
                num1JT=new JTextField(26);//數(shù)字的作用是調(diào)用構(gòu)造文本框?qū)挾?br />                 num1JT.setPreferredSize(new Dimension(50, 50));//數(shù)字的作用是調(diào)用構(gòu)造文本框高度
                //num1JT.setEditable(false);//不可改寫窗口
                //divJB.addActionListener(new exitAction() );
                /*button0JB=new JButton("0");//添加按妞
                button1JB=new JButton("1");
                button2JB=new JButton("2");
                button3JB=new JButton("3");
                button4JB=new JButton("4");
                button5JB=new JButton("5");
                button6JB=new JButton("6");
                button7JB=new JButton("7");
                button8JB=new JButton("8");
                button9JB=new JButton("9");*/
                for(int i=0;i<numJB.length;i++) {
                        numJB[i]=new JButton(i+"");
                }
                addJB=new JButton("+");
                subJB=new JButton("-");
                mulJB=new JButton("*");
                divJB=new JButton("÷");
                dotJB=new JButton(".");
                equalJB=new JButton("=");
                CEJB=new JButton("CE");
                EXITJB=new JButton("EXIT");
                bsJB=new JButton("←―");
                dotJB.addActionListener(new dotAction());
                equalJB.addActionListener(new equalAction() );
                addJB.addActionListener(new operatorAction() );//使按鈕有效(監(jiān)聽)
                subJB.addActionListener(new operatorAction() );
                mulJB.addActionListener(new operatorAction() );
                divJB.addActionListener(new operatorAction() );
                CEJB.addActionListener(new CEAction() );
                EXITJB.addActionListener(new EXITAction() );
                bsJB.addActionListener(new bsAction() );
               
                for(int i=0;i<numJB.length;i++) {
                        numJB[i].addActionListener(new numAction());
                }
                /*button0JB.addActionListener(new numAction() );
                button1JB.addActionListener(new numAction() );
                button2JB.addActionListener(new numAction() );
                button3JB.addActionListener(new numAction() );
                button4JB.addActionListener(new numAction() );
                button5JB.addActionListener(new numAction() );
                button6JB.addActionListener(new numAction() );
                button7JB.addActionListener(new numAction() );
                button8JB.addActionListener(new numAction() );
                button9JB.addActionListener(new numAction() );*/
                panelJP=new JPanel();//添加面板
                panel2JP=new JPanel();
                panel3JP=new JPanel();//讓相應(yīng)組件在相應(yīng)的面板
                panelJP.add(num1JT);
                for(int i=1;i<=3;i++) {
                        panel2JP.add(numJB[i]);
                }
                panel2JP.add(addJB);
                for(int i=4;i<=6;i++) {
                        panel2JP.add(numJB[i]);
                }
                panel2JP.add(subJB);
                for(int i=7;i<=9;i++) {
                        panel2JP.add(numJB[i]);
                }
                panel2JP.add(mulJB);
                panel2JP.add(numJB[0]);
                /*panel2JP.add(button1JB);
                panel2JP.add(button2JB);
                panel2JP.add(button3JB);
                panel2JP.add(button4JB);
                panel2JP.add(button5JB);
                panel2JP.add(button6JB);
                panel2JP.add(button7JB);
                panel2JP.add(button8JB);
                panel2JP.add(button9JB);
                panel2JP.add(button0JB);*/
                panel2JP.add(dotJB);
                panel2JP.add(divJB);
                panel2JP.add(equalJB);
                panel2JP.setLayout(new GridLayout(5,8,8,8));
                panel3JP.add(errorJL);
                panel2JP.add(CEJB);
                panel2JP.add(EXITJB);
                panel2JP.add(bsJB);
                //this.add(CEJB,BorderLayout.CENTER);
                //this.add(panelJP,BorderLayout.NORTH);//邊界布局的北邊.布局方式:流式布局(FloatLayout)、邊界布局(BorderLayout)、網(wǎng)格布局(GirLayout)
                this.add(panelJP,BorderLayout.NORTH);//為不同的面板布局,顯示不同面板的內(nèi)容
                this.add(panel2JP,BorderLayout.CENTER);
                this.add(panel3JP,BorderLayout.SOUTH);
                this.setTitle("計算器");
                this.setSize(300,450);//設(shè)置窗口大小
                this.setResizable(false);
                this.setVisible(true);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
//        class calcAction implements ActionListener{
//                public void actionPerformed(ActionEvent m) {
//                                errorJL.setText("數(shù)字格式錯誤");
//                                num1JT.setText("");
//                        c=a+b;
//                        c=(double)(Math.round(c*100))/100;//設(shè)置保留數(shù)字位數(shù)
//                        num1JT.setText(c+"");
//                }
//        }
        //創(chuàng)建事件類部          //實現(xiàn)監(jiān)聽器接口
        class numAction implements ActionListener{
                public void actionPerformed(ActionEvent e) {
                        JButton tempJB=(JButton)e.getSource();//強轉(zhuǎn)為按妞,接下來與tempJB的getText
                        num1JT.setText(num1JT.getText()+tempJB.getText());//讓文本框獲取按妞的內(nèi)容
                        }               
                }
        class equalAction implements ActionListener{
                public void actionPerformed(ActionEvent q) {
                        try {
                                        b=Double.parseDouble(num1JT.getText());
                                        switch(operator) {
                                                case "+":c=a+b;break;
                                                case "-":c=a-b;break;
                                                case "*":c=a*b;break;
                                                case "÷":c=a/b;break;
                                        }
                        c=(double)(Math.round(c*100))/100;
                        num1JT.setText(c+"");
                        }catch(NumberFormatException m) {
                                 JOptionPane.showMessageDialog(null, "數(shù)字格式錯誤");
                                 num1JT.setText("");
                                 }
                }
        }
        class dotAction implements ActionListener{
                public void actionPerformed(ActionEvent e) {
                        if(dotflag==false)
                                num1JT.setText(num1JT.getText()+e.getActionCommand());
                        dotflag=true;
                        }               
                }
        class operatorAction implements ActionListener{
                public void actionPerformed(ActionEvent e) {
                        try {
                        a=Double.parseDouble(num1JT.getText());
                        }catch(NumberFormatException m){
                        num1JT.setText("");//此前應(yīng)將operator定義為全局變量
                        }
                        num1JT.setText("");
                        operator=e.getActionCommand();//獲取組件標(biāo)簽、文本
                        dotflag=false;
        }
        }
        class CEAction implements ActionListener{
                public void actionPerformed(ActionEvent e) {       
                        num1JT.setText("");
                        operator=e.getActionCommand();//獲取組件標(biāo)簽、文本
                        dotflag=false;
                }
                }
        class bsAction implements ActionListener{
                public void actionPerformed(ActionEvent e) {
                        String str=num1JT.getText();
                        num1JT.setText(str.substring(0,str.length()-1));//取數(shù)字長度減一位的內(nèi)容
                       
                }
        }
        class EXITAction implements ActionListener{
                public void actionPerformed(ActionEvent e) {
                System.exit(0);
                }
        }
        public  static void main (String[] args) {
                new jisuanjicalc();       
        }
       
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:467774 發(fā)表于 2019-1-14 11:18 | 只看該作者
好資料,51有你更精彩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表