/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 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. POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)

    POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环) Description Several currency ...

  2. 24. Swap Nodes in Pairs(M);25. Reverse Nodes in k-Group(H)

    24. Swap Nodes in Pairs Given a linked list, swap every two adjacent nodes and return its head. For ...

  3. linux c 编程 ------ 串口编程

    http://blog.csdn.net/specialshoot/article/details/50707965 对于串口的打开操作,必须使用O_NOCTTY参数.O_NOCTTY如果路径名指向终 ...

  4. vue子组件的自定义事件

    父子组件的信息传递无碍就是父组件给子组件传值(props和$attrs)和父组件触发子组件的事件($emit) 之前已经谈过了父组件给子组件传值了,现在来说说父组件触发子组件的自定义事件吧-- 实际上 ...

  5. 浮动和margin-left负值的有趣现象

    我将第二个浮动的元素的margin-left的值不断减小: 被设置元素左移,后面的元素跟着动 当被设置元素的右边界超过了前面元素的左边界,后面边的元素被前面的元素挡在外面了

  6. 图解MySQL 内连接、外连接

    2.内连接(INNER JOIN)内连接(INNER JOIN):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行.(所谓的链接表就是数据库在做查询形成的中间表).例如:下面的语句3 ...

  7. 阿里云(一)云存储OSS的命令行osscmd的安装和使用

    一.安装Python 在Linux Shell里验证Python版本: $ python -V Python 2.7.10 二.安装OSScmd SDK osscmd是基于python 2.5.4(其 ...

  8. mysql统计一个字段的多种状态

    假如我有下面的表:ID    Item           status            updatetime    author1    a        1        2014-01-0 ...

  9. v140平台工具集与v110工具集选择

    今天在编译用vs2012编译C++动态库提示:error MSB8020: The builds tools for v140_xp (Platform Toolset = 'v140_xp') ca ...

  10. cordova app 监听物理返回键

    物理返回键指的是手机系统自带的返回按钮,通过cordova监听返回按钮操作,可以禁止某些页面的返回操作,以及实现点击两次返回按钮退出应用. var pageUrl = window.location. ...