Java 界面编程【03】事件监听
当你把界面都设计好了,总需要添加相应的执行动作给组件,在JAVA中有相应的时间处理机制,叫做“监听器”,给组件添加相应执行动作的过程叫做“注册”,其中的“监听器”是一个接口,里面包含了相应的执行函数,要做的是自己实现其中的方法函数,然后“注册”给组件,通俗一点的话就是老妈让我去买酱油,老妈不关心我会转过几天街道,会怎样和老板到讨价还价怎样回家,老妈需要的最终结果是我能够将酱油交付到她的手中,期中买酱油的过程是我实现的,我就是事件处理机制里面的“监听器”接受老妈的指示,老妈让我买酱油去,就是对应将事件“注册”给我,呵呵,又一次完美体现了JAVA中实现与接口分离。
JAVA中的组件事件有ActionEvent、KeyEvent、FocusEvent、ComponentEvent、MouseEvent、AdjustmentEvent等,每个组件支持其中的全部或者是一部分事件,相应的事件有相应的Listener来监听事件的发生并且实现接口的方法,程序员要做的事情就是创建一个事件的类对象,实现它里面的函数,然后将它注册给相应的组件,下面用代码演示一下:

1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.*;
4
5 public class ButtonDemo {
6 private JFrame
7 frame=new JFrame("ButtonDemo");
8 private JButton
9 b1 = new JButton("按钮1"),
10 b2 = new JButton("按钮2");
11 private JTextField
12 txt = new JTextField(10);
13 //这里是使用一个匿名类来实现对按钮的监听
14 private ActionListener bl = new ActionListener() {
15 //实现监听类中的抽象函数
16 public void actionPerformed(ActionEvent e) {
17 String name = ((JButton)e.getSource()).getText();
18 txt.setText(name);
19 }
20 };
21 public ButtonDemo () {
22 //将监听对象注册给两个按钮
23 b1.addActionListener(bl);
24 b2.addActionListener(bl);
25 frame.setLayout(new FlowLayout());
26 frame.add(b1);
27 frame.add(b2);
28 frame.add(txt);
29 frame.setVisible(true);
30 frame.setSize(200,150);
31
32 }
33 public static void main(String[] args) {
34 new ButtonDemo ();
35 }
36 }

监听接口中如果有不止一个函数,而我只想实现其中的一个函数的时候,很显示程序是不能运行的,因为你必须实现接口当中的所有函数的时候,才可以通过编译,程序才可以跑起来,那应该怎们办纳?呵呵,显然JAVA语言设计者已经考虑到了这一点,所以提供了一个叫做“适配器”的家伙,它默认实现了接口当中的所有函数,继承“适配器”这个类,并覆盖你所该兴趣的那个函数就可以了:
1 class MyMouseListener extends MouseAdapter{
2 public void mouseClicked(MouseEvent e){
3 //实现当点击鼠标时的动作
4 }
5 }
Java 界面编程【03】事件监听的更多相关文章
- Java设计模式——观察者模式(事件监听)
最近在看Tomcat和Spring的源码,在启动的时候注册了各种Listener,事件触发的时候就执行,这里就用到了设计模式中的观察者模式. 引-GUI中的事件监听 想想以前在学Java的GUI编程的 ...
- java鼠标与键盘事件监听
package cn.stat.p3.windowdemo; import java.awt.Button; import java.awt.FlowLayout; import java.awt.F ...
- java中的key事件监听机制
package com.at221; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.sw ...
- Java SE (3) 之 事件监听
package com.sun; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Demo ...
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- Java界面编程—事件监听机制
组件首先要先注册事件处理器,当用户单击组件.移动鼠标或者敲击键盘时都会产生事件(Event),一旦有时间发生,应用程序就会做出对该事件的响应,这些组件就是事件源(Event source). 接受.解 ...
- 4.JAVA之GUI编程事件监听机制
事件监听机制的特点: 1.事件源 2.事件 3.监听器 4.事件处理 事件源:就是awt包或者swing包中的那些图形用户界面组件.(如:按钮) 事件:每一个事件源都有自己特点有的对应事件和共性事件. ...
- JAVA之旅(三十一)——JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件
JAVA之旅(三十一)--JAVA的图形化界面,GUI布局,Frame,GUI事件监听机制,Action事件,鼠标事件 有段时间没有更新JAVA了,我们今天来说一下JAVA中的图形化界面,也就是GUI ...
- GUI编程笔记(java)05:GUI事件监听机制原理和举例说明
1.事件监听机制: A:事件源 事件发生的地方 B:事件 就是要发生的事情 C:事件处理 就是针对发生的事情做 ...
- Java自学-图形界面 事件监听
Swing 如何进行事件监听 示例 1 : 按钮监听 创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用 package gui; imp ...
随机推荐
- SmartGit 30天评估期结束解决办法
smartgit 需要输入序列号解决办法: 1.找到路径: %APPDATA%\syntevo\SmartGit\<main-smartgit-version> 然后删除: setting ...
- HDU 3861 The King’s Problem 强连通分量 最小路径覆盖
先找出强连通分量缩点,然后就是最小路径覆盖. 构造一个二分图,把每个点\(i\)拆成两个点\(X_i,Y_i\). 对于原图中的边\(u \to v\),在二分图添加一条边\(X_u \to Y_v\ ...
- UVa 12235 状压DP Help Bubu
题解戳这 一开始没看懂题解,后来想明白以后,d(i, j, s, x)是考虑第i本书的时候,前面已经拿走了j本书,剩下的书的种类的二进制状态为s,剩下的最后一本书的编号为x,所能得到的最小混乱度. 这 ...
- 光学字符识别OCR-8 综合评估
数据验证 尽管在测试环境下模型工作良好,但是实践是检验真理的唯一标准.在本节中,我们通过自己的模型,与京东的测试数据进行比较验证. 衡量OCR系统的好坏有两部分内容:(1)是否成功地圈 ...
- postgres 用户管理
首次安装完成 pg 数据库后,会默认自带一个用户, 用户名: postgres 密码: postgres 可以使用命令 \du 查看数据库用户 创建新用户: create user dev with ...
- PHP-7.1 源代码学习:字节码生成 之 "$a = 1"
前言 本文通过分析 "$a=1" 这个 PHP 语句的编译和执行来窥探 php-cli 解释执行逻辑 准备 参考之前的系列文章,在 ubuntu 环境下下载,编译 PHP 源代码 ...
- 2018天梯赛第一次训练题解和ac代码
随着评讲的进行代码和题解会逐步放上来 2018天梯赛第一次训练 1001 : 进制转换 Time Limit(Common/Java):1000MS/10000MS Memory Limit: ...
- 下载,配置环境变量,第一个demo
一.在 http://www.oracle.com 下载java JDK 安装到自定义的地方. 二.配置环境变量:在我的电脑→高级系统设置→环境变量 ① 找到Path新增一个路径(该路径为JDK存放的 ...
- IO Streams:缓冲流
我们迄今为止看到的大多数示例都使用无缓冲的I / O.这意味着每个读或写请求都由底层操作系统直接处理.这使程序效率变得很低,因为每个这样的请求经常触发磁盘访问,网络活动或一些相对昂贵的其他操作. 为了 ...
- 九度oj 题目1083:特殊乘法 清华大学2010年机试题目
题目描述: 写个算法,对2个小于1000000000的输入,求结果. 特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5 输入: 两个小于1000000000的 ...