Java简单的计算器编程

 设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、

设计的计算器应用程序可以完成家法、减法、乘法、除法和取余运算。

以下是效果展示图:

Java简单的计算器编程

 详细代码:

package 计算器;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.GridLayout;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class 计算器 {
    String number1;       //第一个参与运算的数字 变量 string是数据类型  整个是定义属性
    String number2;       //第二个参与运算的数字
    String operate;       //数字的运算符
    String number="";     //文本框当中显示的内容
    double result;        //两个数字的结果,这个结果会存到文本框当中

    JFrame jf;   //计算机界面的窗体
    JTextField jtf;  //文本域输入框
    JButton[]jbs;   //存放16个按钮组件的数组
    private JButton clear;   //清空按钮组件

    public 计算器 () {
        jf = new JFrame("计算器");// 新建窗体组件叫jf
        jtf = new JTextField(15);//设置文本域组件
        jbs = new JButton[16];//初始化数组
        clear = new JButton("清空");  //设置“清空”按钮
        String str = "123+456-789*0.=/";
        for (int i = 0;i <jbs.length;i++) {    //利用for循环,依次把数字写到文本处
            jbs[i] = new JButton(str.charAt(i) + "");
            //在for循环当中调用每一个按钮的addActionListener方法
            jbs[i].addActionListener(new ButClick());   //添加了事件监听机制,将我们创建的ButClick对象以参数的形式传入,这样就给每一个按钮添加了事件监听器
        }
        init();   //在计算器构造方法当中调用init方法,也就是说在创建对象的时候,他会自动的调用init方法,从而将组件添加到相应的位置
        jf.setSize(500,400); //窗口界面的大小
        jf.setLocation(600,300);
        jf.setVisible(true);//调用jf的setVisible方法,使它显示在桌面上 可见
    }
    public void init(){
        //BorderLayout layout=new BorderLayout();   //创建BorderLayout布局(方位布局是上下左右中)
        jf.setLayout(new BorderLayout());   //将frame容器设为Borderlayout 方位布局
        JPanel panel1=new JPanel();  //创建一个JPanle1容器
        JPanel panel2=new JPanel();  //创建一个JPanle2容器

        panel1.setLayout(new FlowLayout());  //将panel1容器设为FlowLayout 流布局
        panel1.add(jtf);//添加文本域
        panel1.add(clear);//添加清空按钮

        panel2.setLayout(new GridLayout(4,4));  //将panel2容器设为GridLayout   并且是4行4列的表格布局
        for (int i = 0;i <jbs.length;i++) {  //使用for循环,将数字和符号添加到panel2容器中
            panel2.add(jbs[i]);     //循环添加每一个按钮对象    通过下标位置来获取每一个按钮对象
        }

        //panel1.setLayout(new BorderLayout());   //将panel容器设为Borderlayout 布局
        jf.add(panel1,BorderLayout.NORTH);   //将panel1添加在窗体的最上方
        jf.add(panel2,BorderLayout.CENTER);   //将panel添加在窗体的最中间
    }

    //内部类的方式实现监听器
    class ButClick implements ActionListener {     //用ButClick类实现 ActionListener的接口 implen实现

        public void actionPerformed(ActionEvent e) {
            //并且在ButClink类当中实现ActionListenerjiekou当中的ActionPerformed的方法,在ActionPerformed的方法实现具体的运算逻辑,
            //来实现计算业务逻辑
            //获取按钮所对应的值,也就是我们按下的按钮所对应的标签值
            //获取标签值:调取ActionEvent对象的GetSource方法来获取相对应的主键 主键就是按钮
            String text = ((JButton)e.getSource()).getText(); //需要进行强制类型转换,把主键转换成JButton;调用JButton中getText方法,来获取上面对应的标签值,并且赋值给Sreing text变量
            //判断是符号还是数字
            if(text.equals ("=")){  //equals是比较相等
                if(operate.equals("+")){
                    //number1和number2都是string类型,需要进行字符串数字类型的转换
                    result = Double.parseDouble(number1) + Double.parseDouble(number2);
                    jtf.setText(result+"");  //setText只能传入字符串类型的数字,将double类型的result变成字符串类型的数字,拼接一个空字符串
                }else if (operate.equals("-")){
                    result = Double.parseDouble(number1) - Double.parseDouble(number2);
                    jtf.setText(result+"");
                }else if (operate.equals("*")) {
                    result = Double.parseDouble(number1) * Double.parseDouble(number2);
                    jtf.setText(result + "");
                }else if (operate.equals("/")) {
                    result = Double.parseDouble(number1) / Double.parseDouble(number2);
                    jtf.setText(result + "");
                }
                number = "";     //相当于清空按钮,使文本域恢复
            }else if(text.equals("+")){
                operate = "+";   //首先将operate赋值为“+”
                number = number + text;
                jtf.setText(number);
            }else if(text.equals("-")){
                operate = "-";
                number = number + text;
                jtf.setText(number);
            }else if(text.equals("*")){
                operate = "*";
                number = number + text;
                jtf.setText(number);
            }else if(text.equals("/")){
                operate = "/";
                number = number + text;
                jtf.setText(number);
            }else{
                //将text获取到的数字赋值给number1还是number2,需要做一个判断
                if(number1 == null){
                    number1 = text;
                }else{
                    number2 = text;
                }
                number = number+text;   //显示到文本域当中   字符串拼接
                jtf.setText(number);//调用jtf.setText来对文本域内容进行设置,将number传入
            }
        }
    }

    public static void main(String[] args){

        计算器 j = new 计算器();    //在main方法中创建计算器对象  实例化
    }
}

 

上一篇:如何使用java代码启动tomcat和打开浏览器


下一篇:大一 Java 课程设计实践 - 迷你版画图板(附源代码和设计文档)