JAVA 图形开发之计算器设计(事件监听机制)

/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 [email protected]*/

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

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

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

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

//定义一个类,以ActionListener为接口
public class ButtonListener implements ActionListener {

    public void actionPerformed(ActionEvent e) {
        String str = e.getActionCommand();//通过这个方法来获取每个按钮表示的字符串

                //...
    }

}

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

数据部分

 1 if (flag1)
 2 {//整数部分,整数部分通过一个flag1变量来判断是否写了小数点
 3     a *= 10;
 4     a = a + (double) Integer.parseInt(str);
 5     s += str;
 6     this.text1.setText(s);
 7     // System.out.println(a);
 8 }
 9 else
10 {//小数部分
11     i++;
12     b = b + Double.parseDouble(str) / Math.pow(10, i);
13     s += str;
14     this.text1.setText(s);
15     // System.out.println(b);
16 }

符号部分可设一个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);

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

原文地址:https://www.cnblogs.com/csu-lmw/p/9275280.html

时间: 2024-10-08 04:39:46

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

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

事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件.(如:鼠标单击事件) 监听器:将可以触发某一事件的动作(不止一个动作)都已经封装到了监听器中. 以上三者,在java中都已经定义好了,直接获取其对象来用就可以了. 我们要做的事情是,就是对产生的动作进行处理. 图解事件监听机制: 4.JAVA之GUI编程事件监听机制,布布扣,bubuko.com

Java 中的事件监听机制

看项目代码时遇到了好多事件监听机制相关的代码.现学习一下: java事件机制包含三个部分:事件.事件监听器.事件源. 1.事件:继承自java.util.EventObject类,开发人员自己定义. package com.shuyan.javatest.EventTest; import java.util.EventObject; public class DnsEvent extends EventObject { private String userData; private long

Java事件监听机制与观察者设计模式

一. Java事件监听机制 1. 事件监听三要素: 事件源,事件对象,事件监听器 2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对象传递进去,开发者可以利用事件对象操作事件源. 3. 入门程序 1 /** 2 * Created by IntelliJ IDEA. 3 * 4 * @Auther: ShaoHsiung 5 * @Date: 2018/8/29 21:25 6 * @Title: 事件监听入门程序 7 * @D

Java中的事件监听机制

鼠标事件监听机制的三个方面: 1.事件源对象: 事件源对象就是能够产生动作的对象.在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象.Java中根据事件的动作来区分不同的事件源对象,动作发生在哪个组件上,那么该组件就是事件源对象 2.事件监听方法: addMouseListener(MouseListener ml) ;该方法主要用来捕获鼠标的释放,按下,点击,进入和离开的动作:捕获到相应的动作后,交由事件处理类(实现MouseListener接口)进行处理. addAction

JAVA事件监听机制学习

//事件监听机制 import java.awt.*; import java.awt.event.*; public class TestEvent { public static void main(String[] args) { Frame f = new Frame("Test"); Button b = new Button("Press Me!"); Monitor bh = new Monitor(); //实现了某种监听器接口的类的对象 b.add

.NET事件监听机制的局限与扩展

.NET中把“事件”看作一个基本的编程概念,并提供了非常优美的语法支持,对比如下C#和Java代码可以看出两种语言设计思想之间的差异. // C#someButton.Click += OnSomeButtonClick; // JavasomeButton.addActionListener( new ActionListener(){ public void actionPerformed(){ ... } }); 在我们的软件中就大量使用事件来对监听者与发布者解耦,但也遇到了一些局限,在这

Spring架构揭秘-事件监听机制

一.事件监听机制概述 二.事件监听机制结构 三.Spring监听机制架构 Spring的Application拥有发布事件并且注册事件监听器的能力,拥有一套完整的事件发布和监听机制.在Java中,通过java.util. EventObject来描述事件,通过java.util. EventListener来描述事件监听器,在众多的框架和组件中,建立一套事件机制通常是基于这两个接口来进行扩展. 在一个事件体系中,有以下几个重要的概念. 1.事件源:事件对象的产生者,任何一个EventObject

GUI编程笔记05:GUI事件监听机制原理和举例说明

1.事件监听机制:       A:事件源          事件发生的地方       B:事件             就是要发生的事情       C:事件处理       就是针对发生的事情做出的处理方案       D:事件监听       就是把事件源和事件关联起来 2.举例:人受伤事件. 事件源:人(具体的对象)         Person p1 = new Person("张三");         Person p2 = new Person("李四&qu

关于事件监听机制的总结(Listener和Adapter)

记得以前看过事件监听机制背后也是有一种设计模式的.(设计模式的名字记不清了,只记得背后实现的数据结构是数组.) 附上事件监听机制的分析图: 一个事件源可以承载多个事件(只要这个事件源支持这个事件就可以,男人就不支持生孩子的事件)  事件和监听器有对应关系的. 下面用awt中的标准图形化界面分析: 接口WindowListener 中有一个实现类WindowAdapter类.适配器类. EventListener.java 下面是所有超级接口EventListener.java的源代码   其实就