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的简单使用

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

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

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。