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); //设置保留小数位数 和 取舍模式
}
}
}
java-通过JFrame类实现简易计算器 :加减乘除
于 2024-05-09 21:46:33 首次发布