千家信息网

如何使用Java图形化界面编程实现简单计算器

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要为大家展示了"如何使用Java图形化界面编程实现简单计算器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用Java图形化界面编程实现简单
千家信息网最后更新 2025年01月19日如何使用Java图形化界面编程实现简单计算器

这篇文章主要为大家展示了"如何使用Java图形化界面编程实现简单计算器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用Java图形化界面编程实现简单计算器"这篇文章吧。

1.简单计算器

使用AWT编程,FrameNORTH区域放置TextField组件,将指定为4行5列GridLayout布局管理器的Panel放置于Frame中部区域,其中填充操作符和操作数按钮。
 按钮触发事件源,对按钮添加ActionListener注册监听。自定义NumListener(操作数监听类)、OperatListener(操作符监听类)、EqualListener("="符监听类)和匿名内部类(如b[11]’-'符监听类)分情况对按钮事件进行监听并响应。
注意:整数、浮点、负数以及连续运算均可以。

界面效果:

简单计算一下 -12 + 3 = -9

代码:

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 {    //操作数    double x,y;    String op;    boolean flag;    Frame frame = new Frame("智子的计算器!");    TextField tf = new TextField(30);    Button[] b = new Button[20];    public void init(){        //北部区域放置文本框        frame.add(tf,BorderLayout.NORTH);        Panel panel = new Panel();        panel.setLayout(new GridLayout(4,5,2,2));        //设置按钮        String s = "+-*/%";        for(int i=0;i<10;i++) {//运算数            b[i] = new Button(i + "");            b[i].setForeground(blue);        }        for(int i=0;i<5;i++) {//运算符            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);        }        //按钮注册监听        for (int i = 0; i < 10; i++) {//操作数注册监听            b[i].addActionListener(new NumListener());        }        for (int i = 10; i < 18; i++) {//操作符注册监听            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;                }            }        });        //"="注册监听        b[18].addActionListener(new EqualListener());        //"."注册监听        b[19].addActionListener(new NumListener());        //将按钮加入panel        for (int i = 0; i < 20; i++) {            panel.add(b[i]);        }        //设置中部按钮        frame.add(panel);        //窗口监听器 注册监听        frame.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });        //设置窗口最优并可见        frame.pack();        frame.setVisible(true);    }    //数字按钮监听器类    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;        }    }    //操作符按钮监听器类    public class OperatListener implements ActionListener{        @Override        public void actionPerformed(ActionEvent e) {            x = Double.parseDouble(tf.getText());            op = e.getActionCommand();            flag = false;        }    }    //等号按钮监听器类    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图形化界面编程实现简单计算器"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0