java图形界面AWT编写计算器

 更新时间:2020年12月14日 14:06:24   作者:niaonao  
这篇文章主要为大家详细介绍了基于java语言下图形界面AWT编写计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、前言

1)、这个计算器是基于java语言下图形界面AWT编写的。其实我认为写这个计算器,实现什么功能不重要,市场也不缺这个计算器,而是在于对AWT中三大布局的及画板的使用简单控件的操作使用。通过联系熟悉掌握AWT基础为深入学习打下基础。这个计算器功能也十分简单,空有其表。不过有兴趣的话可以继续添加功能完善操作等。

2)、使用平台:主要使用Myeclipse2014

3)、主要知识点:java 基础; awt+swing

二、功能实现及代码展示

1)、主要是layout布局的练习,对画板文本框的使用,以及控件button的事件的注册与监听。因为功能也很简单,所以代码就简写到同一个类里了。实现了基本的四则运算。

2)、代码如下:

import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import java.awt.TextField; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import java.awt.Color; 
 
public class JiSuanJi { 
 
 private JFrame frame; //声明相关布局面板 
 private JPanel panelwest; 
 private JPanel panelcenter; 
 private JPanel paneleast; 
 private TextField tf; 
 
 private JButton buttonzero; //声明按钮控件 
 private JButton buttondot; 
 private JButton buttonequal; 
 private JButton buttonplus,buttonminus,buttonmultiple,buttondevision,buttonsin,buttontozero; 
 private JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix,buttonseven,buttoneight,buttonnine; 
 
 
 private ButtonListener listener;   //声明监听事件 
 
 public static void main(String args[]){ 
 new JiSuanJi(); 
 } 
 
 public JiSuanJi(){ 
  
 initView();     //实例化相关对象 
  
 setCenter();     //布局添加控件及相关控件处理 
 setWest(); 
 setEast(); 
  
 addListener();     //设置监听 
  
 setFrame();     //对 frame设置布局及显示处理 
  
 } 
 
 class ButtonListener implements ActionListener{ 
 int biaozhi=0;     //初始化相关变量 
 double flag1=0,flag2=0,flag3=0; 
 //@Override 
 public void actionPerformed(ActionEvent e){ 
  //(1)通过 e.getSource(),获取点击事件的按钮来源,作出相应处理 
 
  if(e.getSource()==buttondot){ 
  tf.setText("0."); 
  } 
  if(e.getSource()==buttontozero){ 
  tf.setText(""); 
  } 
  if(e.getSource()==buttonzero){ 
  tf.setText(tf.getText()+"0"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttonone){ 
  tf.setText(tf.getText()+"1");//文本框显示1、2、3.。。 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttontwo){ 
  tf.setText(tf.getText()+"2"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttonthree){ 
  tf.setText(tf.getText()+"3"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttonfour){ 
  tf.setText(tf.getText()+"4"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttonfive){ 
  tf.setText(tf.getText()+"5"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  
  else if(e.getSource()==buttonsix){ 
  tf.setText(tf.getText()+"6"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttonseven){ 
  tf.setText(tf.getText()+"7"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttoneight){ 
  tf.setText(tf.getText()+"8"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  else if(e.getSource()==buttonnine){ 
  tf.setText(tf.getText()+"9"); 
  flag1=Double.parseDouble(tf.getText()); 
  } 
  if(e.getSource()==buttonplus){ 
  tf.setText(""); 
  flag2=flag1; 
  biaozhi=0; 
  } 
  if(e.getSource()==buttonminus){ 
  tf.setText(""); 
  flag2=flag1; 
  biaozhi=1; 
  } 
  if(e.getSource()==buttonmultiple){ 
  tf.setText(""); 
  flag2=flag1; 
  biaozhi=2; 
  } 
  if(e.getSource()==buttondevision){ 
  tf.setText(""); 
  flag2=flag1; 
  biaozhi=3; 
  } 
  if(e.getSource()==buttonsin){ 
  flag3=Math.sin(flag1); 
  tf.setText(flag3+""); 
  } 
  if(e.getSource()==buttonequal){ 
  if(biaozhi==0){ 
   flag3=flag2+flag1; 
  } 
  if(biaozhi==1){ 
   flag3=flag2-flag1; 
  } 
  if(biaozhi==2){ 
   flag3=flag2*flag1; 
  } 
  if(biaozhi==3){ 
   flag3=flag2/flag1; 
  } 
  tf.setText(flag3+""); 
  } 
 } 
 } 
 
 private void initView(){ 
  
 /** 
  * 创建框架、小容器对象、按钮对象 
  */ 
 tf = new TextField(30);//初始化界面宽度 
 frame = new JFrame("简易计算机"); 
 panelcenter = new JPanel(); 
 panelwest = new JPanel(); 
 paneleast = new JPanel(); 
  
 listener = new ButtonListener(); //实例化监听对象 
 } 
 
 private void setCenter(){ 
  
 //(1)初始化控件显示值 
 buttonone=new JButton("1"); 
 buttontwo=new JButton("2"); 
 buttonthree=new JButton("3"); 
 buttonfour=new JButton("4"); 
 buttonfive=new JButton("5"); 
 buttonsix=new JButton("6"); 
 buttonseven=new JButton("7"); 
 buttoneight=new JButton("8"); 
 buttonnine=new JButton("9"); 
  
 //(2)设置布局样式 
 panelcenter.setLayout(new GridLayout(3,3));//根据内容多少来布局 
  
 //(3)中央布局添加控件按钮 
 panelcenter.add(buttonone); 
 panelcenter.add(buttontwo); 
 panelcenter.add(buttonthree); 
 panelcenter.add(buttonfour); 
 panelcenter.add(buttonfive); 
 panelcenter.add(buttonsix); 
 panelcenter.add(buttonseven); 
 panelcenter.add(buttoneight); 
 panelcenter.add(buttonnine); 
 } 
 
 private void setEast(){ 
  
 //(1)设置控件显示符号 
 buttonplus=new JButton("+"); 
 buttonminus=new JButton("-"); 
 buttonmultiple=new JButton("*"); 
 buttondevision=new JButton("/"); 
 buttonsin=new JButton("sin"); 
 buttontozero=new JButton("清除"); 
  
 //(2)设置布局样式 
 paneleast.setLayout(new GridLayout(3,2)); 
  
 //(3)右布局添加相应按钮控件 
 paneleast.add(buttonplus); 
 paneleast.add(buttonminus); 
 paneleast.add(buttonmultiple); 
 paneleast.add(buttondevision); 
 paneleast.add(buttonsin); 
 paneleast.add(buttontozero); 
  
 } 
 
 private void setWest(){ 
  
 //(1)初始化控件显示值 
 buttonzero=new JButton("0"); 
 buttondot=new JButton("."); 
 buttonequal = new JButton("="); 
  
 //(2)对这三个按钮设置布局 
 panelwest.setLayout(new GridLayout(3,1)); 
  
 //(3)左边布局添加按钮控件,将三个按钮添加入布局 
 panelwest.add(buttonzero); 
 panelwest.add(buttondot); 
 panelwest.add(buttonequal); 
  
 } 
 
 private void addListener(){ 
  
 //(1)对 1-9对应的按钮添加监听 
 buttonone.addActionListener(listener); 
 buttontwo.addActionListener(listener); 
 buttonthree.addActionListener(listener); 
 buttonfour.addActionListener(listener); 
 buttonfive.addActionListener(listener); 
 buttonsix.addActionListener(listener); 
 buttonseven.addActionListener(listener); 
 buttoneight.addActionListener(listener); 
 buttonnine.addActionListener(listener); 
  
 //(2)对运算符对应的按钮添加监听 
 buttonplus.addActionListener(listener); 
 buttonminus.addActionListener(listener); 
 buttonmultiple.addActionListener(listener); 
 buttondevision.addActionListener(listener); 
 buttonsin.addActionListener(listener); 
 buttontozero.addActionListener(listener); 
  
 //(3)对其与的符号对应的按钮监听 
 buttonzero.addActionListener(listener); 
 buttondot.addActionListener(listener); 
 buttonequal.addActionListener(listener); 
  
 } 
 
 private void setFrame(){ 
  
 frame.setLayout(new BorderLayout()); 
 //将准备的不同方位的内容加入大框架 
 frame.add(paneleast,"East"); 
 frame.add(tf,BorderLayout.NORTH); 
 frame.add(panelwest,BorderLayout.WEST); 
 frame.add(panelcenter,BorderLayout.CENTER); 
 //设置颜色 
 tf.setBackground(Color.green); 
 frame.pack(); 
 //将框架展开 
 frame.setLocation(500,500); 
 //程序框架在屏幕的位置 
 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
 //退出进程,不加此句,关闭页面但程序进程仍在后台运行 
 frame.setVisible(true); 
 //一个图形界面默认都是不可见的,setVisible是把图形界面设置为可见 
  
 } 
} 

代码测试可用。

三、演示与效果

1)、运行界面如下:

当然了图形界面大小位置可调,也可初始化其位置与大小。

2)、简单测试四则运算:11*12

好像简单的不能再简单了。这个计算器写下来重点是布局的联系button的简单使用

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

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

相关文章

  • SpringBoot整合EasyExcel实现导入导出数据

    SpringBoot整合EasyExcel实现导入导出数据

    这篇文章主要为大家详细介绍了如何使用Vue、SpringBoot和EasyExcel实现导入导出数据功能,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-05-05
  • 全面了解Java中的CAS机制

    全面了解Java中的CAS机制

    下面小编就为大家带来一篇全面了解Java中的CAS机制。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • JAVA像SQL一样对List对象集合进行排序

    JAVA像SQL一样对List对象集合进行排序

    这篇文章主要介绍了JAVA像SQL一样对List对象集合进行排序的实现方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Java基础学习之关键字和变量数据类型的那些事

    Java基础学习之关键字和变量数据类型的那些事

    变量就是系统为程序分配的一块内存单元,用来存储各种类型的数据,下面这篇文章主要给大家介绍了关于Java基础学习之关键字和变量数据类型的那些事,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • springboot自定义redis-starter的实现

    springboot自定义redis-starter的实现

    这篇文章主要介绍了springboot自定义redis-starter的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Spring中的模块与应用场景详解

    Spring中的模块与应用场景详解

    这篇文章主要介绍了Spring中的模块与应用场景详解,Spring 框架可以为 Java 应用程序开发提供全面的基础设施支持,它是现在非常流行的 Java 开源框架,对于一个 Java 开发人员来说,熟练掌握 Spring 是必不可少的,需要的朋友可以参考下
    2023-09-09
  • 实例讲解java的纯数字加密解密

    实例讲解java的纯数字加密解密

    本文给大家分享的是一个java纯数字加密解密技术,加密和解密本身就是一对共生体,缺一不可,需要的朋友可以参考下
    2015-07-07
  • Java Set集合的遍历及实现类的比较

    Java Set集合的遍历及实现类的比较

    这篇文章主要介绍了Java Set集合的遍历及实现类的比较的相关资料,需要的朋友可以参考下
    2017-03-03
  • SpringCloud Feign高级配置详解

    SpringCloud Feign高级配置详解

    这篇文章主要介绍了SpringCloud Feign高级配置,feign是netflix提供的服务间基于http的rpc调用框架,在spring cloud得到广泛应用
    2022-09-09
  • 高价值Java多线程面试题分析

    高价值Java多线程面试题分析

    Java 给多线程编程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销
    2022-03-03

最新评论