【Java】Java使用Swing实现一个模拟计算器(有源码)

04-13 3286阅读 0评论

【Java】Java使用Swing实现一个模拟计算器(有源码) 第1张

  📝个人主页:哈__

期待您的关注 

【Java】Java使用Swing实现一个模拟计算器(有源码) 第2张

今天翻了翻之前写的代码,发现自己之前还写了一个计算器,今天把我之前写的代码分享出来。

【Java】Java使用Swing实现一个模拟计算器(有源码) 第3张

 我记得那会儿刚学不会写,写的乱七八糟,但拿来当期末作业还是不错的哈哈。

直接上源码,后上讲解。

一、源码

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()

免责声明
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明。
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所
提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何
损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在
转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并白负版权等法律责任。

手机扫描二维码访问

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,3286人围观)

还没有评论,来说两句吧...

目录[+]