【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()
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...