【Java】Java使用Swing实现一个模拟计算器(有源码)
📝个人主页:哈__
期待您的关注
今天翻了翻之前写的代码,发现自己之前还写了一个计算器,今天把我之前写的代码分享出来。
我记得那会儿刚学不会写,写的乱七八糟,但拿来当期末作业还是不错的哈哈。
直接上源码,后上讲解。
一、源码
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.text.DecimalFormat;
import java.util.function.ToDoubleBiFunction;
public class MyCalculator {
private JFrame frame=new JFrame("CSDN--哈__");
private String[] keys = {"%","C","CE","Back","1⁄x","X²","√x","÷","7","8","9",
"X","4","5","6","-","1","2","3","+","+/-","0",".","="};//计算器的功能键保存
private JButton [] buttons=new JButton[keys.length];//创建按钮
private JTextField resultText=new JTextField("0");//结果保存用于在计算器上显示
private double resultNum =0.0000;//用于保存运算的结果
private boolean firstDigit=true;//判断是否是第一个输入的数字,或者是运算符后第一个数字
private String operate ="=";//记录当前的运算符
private boolean opearteValidFlag =true;//判断当前输入是否合法
//构造函数
public MyCalculator(){
frame.setLocation(300,200);
frame.setSize(new Dimension(366,439));
frame.setVisible(true);
frame.setResizable(true);//窗口大小可修改
//这里采用awt组件来关闭窗口 事件监听
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) {
System.exit(0);
}
});
}
public void init(){
//先定义三种颜色 用于背景板的填充 数值为网上查找
Color c1=new Color(181,181,181);
Color c2=new Color(126,192,238);
Color c3=new Color(232,232,232);
//计算器功能面板初始化
JPanel pText =new JPanel();//用于保存文本域
JPanel pKey =new JPanel();//用于保存功能按键
//对文本域进行初始化
pText.setLayout(new BorderLayout());
pText.add(resultText);
resultText.setFont(new Font("楷体",Font.BOLD,43));//设置文本框中字体的格式
resultText.setHorizontalAlignment(JTextField.RIGHT);//文本框默认右对齐
resultText.setEditable(false);//文本域不可编辑
resultText.setBorder(null);//设置边框为无
resultText.setBackground(c1);
//对功能案件进行初始化
pKey.setLayout(new GridLayout(6,4,2,2)); //六行四列,相邻两个按钮上下间隔均为两个像素
//开始在按键区加入前八个功能键
for (int i = 0; i 1){
resultText.setText(text.substring(0,text.length()-1)); //如果内容长度大于1,那么直接删掉最后一个字符
}else{
//内容长度等于1
resultText.setText("0");
firstDigit=true;
}
}
}
private void doOperator1(String key){
//对只需要一个数值的按键处理(% 1/x x² √x +/- )
operate=key;
if(operate.equals("%")){
resultNum=getNumFromText()/100;
}
else if(operate.equals("1⁄x")){
if(getNumFromText()==0){
//System.out.println("0没有倒数!");
resultText.setText("零没有倒数!");
opearteValidFlag=false;
}else{
resultNum=resultNum+1.0/getNumFromText();
}
}
else if(operate.equals("√x")){
if(getNumFromText()
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!



