热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

java图形界面AWT编写计算器

这篇文章主要为大家详细介绍了基于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的简单使用

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

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


推荐阅读
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文详细探讨了Java中StringBuffer类在不同情况下的扩容规则,包括空参构造、带初始字符串和指定初始容量的构造方法。通过实例代码和理论分析,帮助读者更好地理解StringBuffer的内部工作原理。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 本文探讨了在Linux系统上使用Docker时,通过volume将主机上的HTML5文件挂载到容器内部指定目录时遇到的403错误,并提供了解决方案和详细的操作步骤。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
  • 本文总结了Java程序设计第一周的学习内容,涵盖语言基础、编译解释过程及基本数据类型等核心知识点。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 本文探讨了在 ASP.NET MVC 5 中实现松耦合组件的方法。通过分离关注点,应用程序的各个组件可以更加独立且易于维护和测试。文中详细介绍了依赖项注入(DI)及其在实现松耦合中的作用。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
author-avatar
最棒的aaaaaaaaa2_531
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有