java-通过JFrame类实现简易计算器 :加减乘除

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.math.*;
import java.util.Objects;


//思路 1.首先生成一个窗口 设置属性 大小 置顶 居中 关闭方式  排布方式  可见性
//     2.创建两个文本框对象和一个计算按钮 和一个列表对象
//     3.将这些对象添加到 窗口中
//     4.对按钮对象进行 监听 并 重写监听方法
//     5.提取JTextField字符串(getText)提出列表下的菜单 (getSelectedItem) 进行计算


public class MyFrame extends JFrame implements ActionListener {
    //利用BigDecimal数据类型 进行操作数据
    BigDecimal num1;
    BigDecimal num2;
    BigDecimal result;
    //列表菜单
    String[] items = {"运算符号", "+", "-", "*", "/"};

    //输入文本框
    JTextField jtf1 = new JTextField(10);
    JTextField jtf2 = new JTextField(10);

    //创建JButton"计算"按钮
    JButton jb = new JButton("计算");

    JTextField jtf = new JTextField(10);  //显示结果的文本框

    JComboBox<String> jComboBox = new JComboBox<>(items); //实现下拉列表的组件

    //在构造方法进行对窗口的初始化和功能的实现
    public MyFrame() {
        //设置窗口大小
        this.setSize(500, 500);
        //设置窗口标题
        this.setTitle("简易计算器");
        //设置窗口置顶
        this.setAlwaysOnTop(true);
        //设置居中
        this.setLocationRelativeTo(null);
        //设置窗口关闭方式 当关闭
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        //设置窗口流式布局
        this.setLayout(new FlowLayout());


        //给按钮添加行为监听
        jb.addActionListener(this);


        //将文本框和按钮等 添加到窗口中
        //这里getContentPane是获取窗口中的隐藏窗口
        this.getContentPane().add(jtf1);
        this.getContentPane().add(jtf2);
        this.getContentPane().add(jComboBox);
        this.getContentPane().add(jb);
        this.getContentPane().add(jtf);


        //设置窗口可见性
        this.setVisible(true);
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        Object obj = e.getSource(); //获取行为对象
        if (obj == jb) {            //判断点击按钮是否为计“计算”按钮
            calc();                 //实现计算操作的方法
        }
        //将计算的结果 转换为字符串 添加到 显示文本框中
        jtf.setText(result.toString());
        System.out.println(result.toString());
    }

    //方法:计算
    public void calc() {
        //获取文本框的值

        //这里因为调用的getText方法为字符串 在创建BigDecimal对象时 有参构造为String
        num1 = new BigDecimal(jtf1.getText());
        num2 = new BigDecimal(jtf2.getText());
        //获取下拉列表的菜单与 +-*/ 进行判断比较 if语句
        //同时BigDecimal的add,subtract等方法对 数据进行操作

        if (jComboBox.getSelectedItem() == "+") {
            result = num1.add(num2);
        } else if (jComboBox.getSelectedItem() == "-") {
            result = num1.subtract(num2);
        } else if (jComboBox.getSelectedItem() == "*") {
            result = num1.multiply(num2);
        } else if (jComboBox.getSelectedItem() == "/") {

            result = num1.divide(num2, 10, RoundingMode.HALF_UP); //设置保留小数位数 和 取舍模式
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值