溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

發(fā)布時(shí)間:2022-01-04 10:36:04 來(lái)源:億速云 閱讀:261 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器”這篇文章吧。

1.簡(jiǎn)單計(jì)算器

使用AWT編程,FrameNORTH區(qū)域放置TextField組件,將指定為4行5列GridLayout布局管理器的Panel放置于Frame中部區(qū)域,其中填充操作符和操作數(shù)按鈕。
 按鈕觸發(fā)事件源,對(duì)按鈕添加ActionListener注冊(cè)監(jiān)聽(tīng)。自定義NumListener(操作數(shù)監(jiān)聽(tīng)類(lèi))、OperatListener(操作符監(jiān)聽(tīng)類(lèi))、EqualListener(“=”符監(jiān)聽(tīng)類(lèi))和匿名內(nèi)部類(lèi)(如b[11]’-'符監(jiān)聽(tīng)類(lèi))分情況對(duì)按鈕事件進(jìn)行監(jiān)聽(tīng)并響應(yīng)。
注意:整數(shù)、浮點(diǎn)、負(fù)數(shù)以及連續(xù)運(yùn)算均可以。

界面效果:

如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

簡(jiǎn)單計(jì)算一下 -12 + 3 = -9

如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

代碼:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import static java.awt.Color.blue;

public class Calculation {
    //操作數(shù)
    double x,y;
    String op;
    boolean flag;
    Frame frame = new Frame("智子的計(jì)算器!");
    TextField tf = new TextField(30);
    Button[] b = new Button[20];

    public void init(){
        //北部區(qū)域放置文本框
        frame.add(tf,BorderLayout.NORTH);
        Panel panel = new Panel();
        panel.setLayout(new GridLayout(4,5,2,2));
        //設(shè)置按鈕
        String s = "+-*/%";
        for(int i=0;i<10;i++) {//運(yùn)算數(shù)
            b[i] = new Button(i + "");
            b[i].setForeground(blue);
        }
        for(int i=0;i<5;i++) {//運(yùn)算符
            b[i+10]=new Button(s.charAt(i)+"");
            b[i+10].setForeground(blue);
        }
        String[] t = {"sqrt","^2","^3","=","."};
        for(int i=0;i<5;i++){
            b[i+15]=new Button(t[i]);
            b[i+15].setForeground(blue);
        }

        //按鈕注冊(cè)監(jiān)聽(tīng)
        for (int i = 0; i < 10; i++) {//操作數(shù)注冊(cè)監(jiān)聽(tīng)
            b[i].addActionListener(new NumListener());
        }

        for (int i = 10; i < 18; i++) {//操作符注冊(cè)監(jiān)聽(tīng)
            if(i==11) continue;
            b[i].addActionListener(new OperatListener());
        }
        b[11].addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if(!flag){
                    tf.setText("-");
                    flag = true;
                } else {
                    x = Double.parseDouble(tf.getText());
                    op = e.getActionCommand();
                    flag = false;
                }
            }
        });
        //“=”注冊(cè)監(jiān)聽(tīng)
        b[18].addActionListener(new EqualListener());
        //“.”注冊(cè)監(jiān)聽(tīng)
        b[19].addActionListener(new NumListener());

        //將按鈕加入panel
        for (int i = 0; i < 20; i++) {
            panel.add(b[i]);
        }

        //設(shè)置中部按鈕
        frame.add(panel);

        //窗口監(jiān)聽(tīng)器 注冊(cè)監(jiān)聽(tīng)
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        //設(shè)置窗口最優(yōu)并可見(jiàn)
        frame.pack();
        frame.setVisible(true);
    }

    //數(shù)字按鈕監(jiān)聽(tīng)器類(lèi)
    public class NumListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            String t = e.getActionCommand();
            String s = tf.getText();
            if(flag==false)
                tf.setText(t);
            else
                tf.setText(s+t);
            flag = true;
        }
    }

    //操作符按鈕監(jiān)聽(tīng)器類(lèi)
    public class OperatListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            x = Double.parseDouble(tf.getText());
            op = e.getActionCommand();
            flag = false;
        }
    }

    //等號(hào)按鈕監(jiān)聽(tīng)器類(lèi)
    public class EqualListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            y = Double.parseDouble(tf.getText());
            flag = true;
            switch(op){
                case "+":tf.setText(x+y+"");
                    break;
                case "-":tf.setText(x-y+"");
                    break;
                case "*":tf.setText(x*y+"");
                    break;
                case "/":
                    if(y!=0)
                        tf.setText(x/y+"");
                    else
                        tf.setText("inf");
                    break;
                case "%":tf.setText(x%y+"");
                    break;
                case "sqrt":tf.setText((int)Math.sqrt(x)+"");
                    break;
                case "^2":tf.setText(y*y+"");
                    break;
                case "^3":tf.setText(y*y*y+"");
                    break;
            }
        }
    }

    public static void main(String[] args) {

        new Calculation().init();
    }
}

以上是“如何使用Java圖形化界面編程實(shí)現(xiàn)簡(jiǎn)單計(jì)算器”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI