小白calculator

本文详细介绍了如何使用Java和IntelliJ IDEA制作一个简易计算器,包括图形界面设计、加减乘除及更多数学运算的实现,以及鼠标监听事件的添加。从第一天的界面设计和按钮监听,到第二天的四则运算和平方、开方,再到第三天的指数、对数、三角函数,逐步完成计算器的功能。
摘要由CSDN通过智能技术生成

制作简易calculator整体流程

step1

通过学习网上视频教程,利用java.jdk11和Intellij IDEA Community Edition,实现calculator的图形界面设计。

即添加计算器的 Button—>按钮 和 用于显示输入数字、输出结果的JTextField—>文本框

step2

给按钮和文本框添加鼠标监听事件。

step3

实现加减乘除、开方、平方、清零和退格功能。

小白第一天

上午:calculator图形界面设计

1、利用Container类定义一个顶级容器c

Container c = getContentPane();

2、建立一个网格管理布局器1—>2行1列

c.setLayout(new GridLayout(2, 1));

3、用类JTextField新建文本框jtf—>指定文本内容"0"并列初始化"0"

JTextField jtf = new JTextField("0", 0);

4、设置jtf水平对齐方式:居右对齐

jtf.setHorizontalAlignment(JTextField.RIGHT);
//jtf对齐方式:居左、居中、居右

5、用类JButton新建按钮并赋对应值

 JButton data0 = new JButton("0");
 /*
 data1~data9和point(点号)~ql(清零)
 格式均与data0一样,不再详述
 按钮有:
 data7、data8、data9、plus、sqr
 data4、data5、data6、minus、root
 data1、data2、data3、mtp、ql
 data0、point、equ、dvd、tg
 */

6、用类JPanel新建面板jp

JPanel jp = new JPanel();

7、新建网格布局管理器2(行数,列数,按钮间水平、垂直间距)

jp.setLayout(new GridLayout(4, 5, 7, 7));

8、调用add()函数,把对应按钮加到面板jp中

jp.add(data7);
/*
以下按钮格式均与data7相同,
填入对应内容即可。
按钮在面板jp中布局:
data7、data8、data9、plus、sqr(开方)
data4、data5、data6、minus、root(平方)
data1、data2、data3、mtp、ql(清零)
data0、point、equ、dvd、tg(退格)
*/

9、把文本框jtf加到顶级容器c中

 c.add(jtf);

10、把面板jp加到顶级容器c中

c.add(jp);

11、窗体大小

  setSize(400, 400);

12、窗体标题

setTitle("小白计算器");

13、窗体可视化

 setVisible(true);

14、固定窗体大小,用户不能自由改变

setResizable(false);

15、单击窗口关闭按钮时程序执行的操作

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
下午:给按钮和文本框添加鼠标监听

通过对象调用函数addActionListener(arg0 ->{ })
实现按钮和文本框的鼠标监听

1、data0的鼠标监听

data0.addActionListener(arg0 -> {
   
            if(jtf.getText().equals("0")){
   
               //将按钮值与0作比较
               jtf.requestFocus();
               /*把输入焦点放在调用这个
               方法的控件上--->即把光标
               放在文本框jtf里
               */
            }else{
   
               String str
               =jtf.getText();
               //取得当前按钮的按钮值
               jtf.setText(str+"0"); 
               //将文本内容后加上字符0
            }
        });

2、data1的鼠标监听

data1.addActionListener(arg0 -> {
   
            if(jtf.getText().equals("0")) {
   
                //将按钮值与0作比较
                jtf.setText("");
                //将文本框初始化为空
                jtf.setText("1");
                //将文本框内容置为 1
                jtf.requestFocus();
                /*把输入焦点放在调用这个
                方法的控件上--->即把光标
                放在文本框jtf里
                */ 
            } else {
   
                String str =
                jtf.getText();
                //取得当前按钮的按钮值
                jtf.setText(str + "1");
                //将文本内容后加上字符1
            }
        });

3、data3~data9

鼠标监听格式与data1相同,填入相对应的内容即可。

4、“.”、“+”、“-”、“*”、“/”

鼠标监听格式与data1相同,填入相对应的内容即可。

5、清零

 ql.addActionListener(e -> {
   
            jtf.setText("0");
            //将文本框置为0--->清零功能
        });

小白第二天

上午:实现加减乘除

监听“等号”—>实现加减乘除

同样调用函数addActionListener(arg0 ->{ })
实现加减乘除

equ.addActionListener(arg0 -> {
   
            //处理“等号” 按键被按下事件
            //加法
            if (jtf.getText().contains("+")) {
   
                //将字符串分割为子字符串,然后将结果作为字符串数组返回
                String[] s = jtf.getText().split("[+]");//转义字符,要用"[+]"或者"\+"
                Double d1 = Double.parseDouble(s[0]);//返回一个指定字符串表示的double值
                Double d2 = Double.parseDouble(s[1]);
                double ans = d1 + d2;
                String answer = String.valueOf(ans);//将结果转换为字符串
                jtf.setText(answer);//将加法运算的结果以字符串形式在文本框中显示
            }
            //减法
            else if (jtf.getText().contains("-")) {
   
                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 if (jtf.getText().contains("*")) {
   
                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 if (jtf.getText().contains("/")) {
   
                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("请选择要进行的运算");
            }
        });
下午:实现平方、开方

平方—>监听sqrt键

 root.addActionListener(e -> {
   //root键被按事件
            String i = jtf.getText()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值