java awt实现计算器功能

 更新时间:2020年12月14日 14:10:17   作者:Mr顺  
这篇文章主要为大家详细介绍了java awt实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java awt实现计算器的具体代码,供大家参考,具体内容如下

上课老师演示了一遍他的写法,由于没给代码,因此按着他的思路撸了一遍,感觉还很简单。

代码以及解释如下:

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Caculate1 {
 static String s1="";
 static String s2="";
 static int f=9;
 static int num1=0,num2=0;
 public static void main(String[] args) {
 int x=0,y=0,z=0;
 JFrame jf=new JFrame( "我的计算器");
 jf.setBounds(0,0,300,400);
// jf.setBackground(bgColor);
 jf.setVisible(true);
 jf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
 JTextField show=new JTextField("0");
 //此处为布局:也就是定义五个容器,(也可以理解为将定义的JFrame空间分为5个容器)
 JPanel jp1=new JPanel(new GridLayout(1,3));//存储:
 JPanel jp2=new JPanel(new GridLayout(1,3));
 JPanel jp3=new JPanel(new GridLayout(1,3));
 JPanel jp4=new JPanel(new GridLayout(1,3));
 JPanel jp5=new JPanel(new GridLayout(1,3));
 
 JButton bt_add=new JButton("+");
 JButton bt_sub=new JButton("-");
 JButton bt_mul=new JButton("*");
 JButton bt_div=new JButton("/");
 JButton bt_7=new JButton("7");
 JButton bt_8=new JButton("8");
 JButton bt_9=new JButton("9");
 JButton bt_4=new JButton("4");
 JButton bt_5=new JButton("5");
 JButton bt_6=new JButton("6");
 JButton bt_1=new JButton("1");
 JButton bt_2=new JButton("2");
 JButton bt_3=new JButton("3");
 JButton bt_0=new JButton("0");
 JButton bt_c=new JButton("C");
 JButton bt_equal=new JButton("=");
 
 jf.setLayout(new GridLayout(6,1));
 //容器1 :添加 '+','-','*','/'按钮
 jp1.add(bt_add);
 jp1.add(bt_sub);
 jp1.add(bt_mul);
 jp1.add(bt_div);
 //容器2:添加'7','8','9'按钮
 jp2.add(bt_7);
 jp2.add(bt_8);
 jp2.add(bt_9);
 //容器3:添加'4','5','6'按钮
 jp3.add(bt_4);
 jp3.add(bt_5);
 jp3.add(bt_6);
 //容器4:添加'1','2','3'按钮
 jp4.add(bt_1);
 jp4.add(bt_2);
 jp4.add(bt_3);
 //容器5:添加'0','C','='
 jp5.add(bt_0);
 jp5.add(bt_c);
 jp5.add(bt_equal);
 
 jf.add(show);
 jf.add(jp1);
 jf.add(jp2);
 jf.add(jp3);
 jf.add(jp4);
 jf.add(jp5);
//元素已经定义好了,思路也很简单:(1)JFrame定义一个大容器jf,jf= 1个显示框(show)+5个容器,分别定义显示框和容器,
 //(2)类似树形添加元素的数据结构,为jf添加元素
 
 //下面便是时间监听了(又称加载驱动)
 bt_9.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+9;
  show.setText(s1);
  }
  
 });
 
 bt_8.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+8;
  show.setText(s1);
  }
  
 });
 
 bt_7.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+7;
  show.setText(s1);
  }
  
 });
 
 bt_6.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+6;
  show.setText(s1);
  }
  
 });
 
 bt_5.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+5;
  show.setText(s1);
  }
  
 });
 
 bt_4.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+4;
  show.setText(s1);
  }
  
 });
 
 bt_3.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+3;
  show.setText(s1);
  }
  
 });
 
 bt_0.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+0;
  show.setText(s1);
  }
  
 });
 
 bt_2.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+2;
  show.setText(s1);
  }
  
 });
 
 bt_1.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+1;
  show.setText(s1);
  }
  
 });
 
 bt_0.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  
  s1=s1+0;
  show.setText(s1);
  }
  
 });
 
 
 bt_equal.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  num1=Integer.valueOf(s2);
  num2=Integer.valueOf(s1);
  int z=0;
  char fg=' ';
  
  switch(f){
  case 0:
   z=num1+num2;
   fg='+';
   break;
  case 1:
   z=num1-num2;
   fg='-';
   break;
  case 2:
   z=num1*num2;
   fg='*';
   break;
  case 3:
   fg='/';
   if(num2==0)
   num2=num2+1;
   z=num1/num2;
   break;
  default:
   break;
  }
  show.setText(s2+" "+fg+" "+s1+" = "+z);
  }
  
 });
 bt_add.addActionListener(new ActionListener(){

  @Override
  public void actionPerformed(ActionEvent e) {
  s2=s1;
  s1="";
  f=0;
  show.setText(s2+"+");
  }
  
 });
 bt_sub.addActionListener(new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  s2 = s1;
  s1 = "";
  f = 1;
  show.setText(s2 + " - ");
  }
 });
 bt_mul.addActionListener(new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  s2 = s1;
  s1 = "";
  f = 2;
  show.setText(s2 + " * ");
  }
 });
 bt_div.addActionListener(new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  s2 = s1;
  s1 = "";
  f = 3;
  show.setText(s2 + " / ");
  }
 });
 bt_c.addActionListener(new ActionListener() {

  @Override
  public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  s2 = "";
  s1 = "";
  num1 = 0;
  num2 = 0;
  f = 9;
  show.setText("0");
  }
 });
 }

}

关于计算器的精彩文章请查看《计算器专题》 ,更多精彩等你来发现!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java编程一维数组转换成二维数组实例代码

    Java编程一维数组转换成二维数组实例代码

    这篇文章主要介绍了Java编程一维数组转换成二维数组,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 深入解析反编译字节码文件中的代码逻辑JVM中的String操作

    深入解析反编译字节码文件中的代码逻辑JVM中的String操作

    这篇文章主要介绍了深入解析反编译字节码文件中的代码逻辑JVM中的String操作,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • SpringCloud集成zookeeper实现服务注册并访问功能

    SpringCloud集成zookeeper实现服务注册并访问功能

    zookeeper和eureka一样,是用于充当服务注册功能服务器的一个springcloud插件,这篇文章主要介绍了SpringCloud集成zookeeper实现服务注册并访问,需要的朋友可以参考下
    2022-06-06
  • Java数据结构之有向图设计与实现详解

    Java数据结构之有向图设计与实现详解

    有向图是具有方向性的图,由一组顶点和一组有方向的边组成,每条方向的边都连着一对有序的顶点。本文为大家介绍的是有向图的设计与实现,需要的可以参考一下
    2022-11-11
  • JAVA加密算法数字签名实现原理详解

    JAVA加密算法数字签名实现原理详解

    这篇文章主要介绍了JAVA加密算法数字签名实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • java全角与半角标点符号相互转换详解

    java全角与半角标点符号相互转换详解

    这篇文章主要为大家介绍了java全角与半角标点符号相互转换详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Java中Socket用法详解

    Java中Socket用法详解

    本文详细讲解了Java中Socket的用法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • Java切割字符串的踩坑实战记录

    Java切割字符串的踩坑实战记录

    最近在项目中使用了java中的分割字符串,踩了一个坑,充分了展示了自己对java底层的认知有很多的不足和欠缺,下面这篇文章主要给大家介绍了关于Java切割字符串的踩坑实战记录,需要的朋友可以参考下
    2022-11-11
  • 使用Files.walkFileTree遍历目录文件

    使用Files.walkFileTree遍历目录文件

    这篇文章主要介绍了使用Files.walkFileTree遍历目录文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • ConcurrentHashMap线程安全及实现原理实例解析

    ConcurrentHashMap线程安全及实现原理实例解析

    这篇文章主要介绍了ConcurrentHashMap线程安全及实现原理实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论