/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/

前段时间刚帮同学用MFC写了个计算器,现在学到JAVA的图形开发,就试着水了一个计算器出来。(可以说是一个水的不能再水的计算器了,感觉MFC真好用)

既然是设计计算器,首先肯定是要做一个计算器界面出来了,但面对JAVA容器的两种布局,想把按钮放整齐真的是一件比较难的事,我就直接用了坐标法贴图(上篇博客中有介绍)。这是我设计的界面

界面设计完了,下面就要开始实现按按钮输入数据。这时就需要使用事件监听机制了。

首先需要知道如何获取数据,

//定义一个类,以ActionListener为接口
public class ButtonListener implements ActionListener { public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();//通过这个方法来获取每个按钮表示的字符串 //...
} }

当获取到按钮表示的字符串的时候就需要根据字符串的内容来进行下一步操作,这时候可以用if..else 或是switch来进行

数据部分

 if (flag1)
{//整数部分,整数部分通过一个flag1变量来判断是否写了小数点
a *= 10;
a = a + (double) Integer.parseInt(str);
s += str;
this.text1.setText(s);
// System.out.println(a);
}
else
{//小数部分
i++;
b = b + Double.parseDouble(str) / Math.pow(10, i);
s += str;
this.text1.setText(s);
// System.out.println(b);
}

符号部分可设一个int类型的变量,用来记录输入了什么运算符,最后在点击等号时,再根据该变量的值来进行运算。

case ".":
flag1 = false;
//...
break;
case "+":
flag1 = true;
flag2 = 1;
  //...
break;
//...........
case "=":
if (flag2 == 1)
//..........
break;

定义好了这个类后,就只需要再修改修改画计算器界面的方法就可以了,怎么修改呢?就是创建一个事件监听类的对象,然后在每个按钮对象的addActionListener()方法中加入该对象就可以了。

ButtonListener blist = new ButtonListener();
JButton button = new JButton();
button.addActionListener(blist);
//.....

运行一下,再算一个式子。emmmmmmmmm。。。。。。。发现了什么没有?文本框没有显示结果?!!想一想还缺了什么没有?。。。。。。。我们并没有把文本框传到我们写的类中!所以,我们需要写一个构造方法,用来传入文本框对象。

public ButtonListener(JTextField jtext) {
this.text1 = jtext;
}

那前面也要相应改为

button.addActionListener(blist);

嗯,现在再运行一下,可以计算了吧?但这只是一个简单的不能再简单的计算器,再想一想怎么能把它更加完善。

JAVA 图形开发之计算器设计(事件监听机制)的更多相关文章

  1. Java swing(awt):事件监听机制的实现原理+简单示例

    (1)实现原理 事件监听机制的实现: 参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回 ...

  2. 图形用户界面(GUI)事件监听机制——窗体事件Frame

    窗体事件.Button的使用 本事例给出一个窗体的定义方法,基本属性设置,给窗体添加退出按钮,让按钮具备退出的功能.熟悉监听器的使用 按钮就是事件源. 那么选择哪一个监听器呢? 通过关闭窗体事例了解到 ...

  3. Android 开发中的View事件监听机制

    在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...

  4. 创建图形用户界面GUI和事件监听机制的简单实现(java)

    创建图形化界面 1.创建Frame窗体      2.对窗体进行基本设置 比如:大小.位置.布局      3.定义组件      4.将组建通过窗体添加到窗体中 5.让窗体显示,通过setVisib ...

  5. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

  6. 4.JAVA之GUI编程事件监听机制

    事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...

  7. JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件

    JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...

  8. java事件监听机制

    1.简单的事件监听 package demo2; /* * java事件监听机制 */ import java.awt.*; import javax.swing.*; import java.awt ...

  9. Java 中的事件监听机制

    看项目代码时遇到了好多事件监听机制相关的代码.现学习一下: java事件机制包含三个部分:事件.事件监听器.事件源. 1.事件:继承自java.util.EventObject类,开发人员自己定义. ...

随机推荐

  1. asp.net中SQL语句太长,怎么换行写?

    http://bbs.csdn.net/topics/390639485?page=1 string strfac="insert into CarInfo values('"+T ...

  2. JVM调优命令-jps

    JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程. 命令格式 1 jps [options] [hostid] options参数-l : 输出主类全名或j ...

  3. JAVA记录-JSP内容

    JSP(JavaServer Pages )是什么? JavaServer Pages(JSP)是一种支持动态内容开发的网页技术它可以帮助开发人员通过利用特殊的JSP标签,其中大部分以<%开始并 ...

  4. Docker 入门 第一部分: 定位和设置

    目录 Docker 入门 第一部分: 定位和设置 Docker概念 镜像和容器 容器和虚拟机 准备你的Docker环境 测试 Docker 的版本 测试 Docker 安装 回顾 总结 Docker ...

  5. 用matplotlib绘制每次交易的盈亏三角形

    用matplotlib绘制每次交易的盈亏三角形 结果: 代码: python def plot_trade_triangle(self): # plot each trade as a trade-t ...

  6. Nodejs stream模块-翻译

    花了两天时间尝试按照自己的话翻译了一下stream模块,以下内容皆翻译于:https://nodejs.org/api/stream.html. 目录 1  Stream(流)     1.1     ...

  7. Linux - awk 文本处理工具三

    AWK 文件打印匹配 格式示例 awk '/Tom/' file # 打印匹配到得行 awk '/^Tom/{print $1}' # 匹配Tom开头的行 打印第一个字段 awk '$1 !~ /ly ...

  8. HTML5+CSS把footer固定在底部

    在刚开始给网页写footer的时候,我们会碰到一个让人烦躁的问题:当页面内容太少时,footer显示在了页面中间,这是我们不希望出现的,我们希望它能够永远呆在底部,不管网页的内容是多还是少.下面的代码 ...

  9. 【webService客户端】webservice客户端工具

    public static Object invokeWebService(String namespaces,String url, String method, Object[] params, ...

  10. requests(三):json请求中中文乱码处理

    最近收到一个问题:json格式请求数据中有中文,导致服务端签名失败. 问题详情: 一位同学在发送json格式的post请求时,请求数据中有中文内容: {"inputCodes":[ ...