Java自定义事件监听
一.将事件处理封装为特定事件的好处
1.更好的体现Java面向对象的思想
和给按钮等组件添加监听器一样,将鼠标点击等信息事件封装,达到面向对象的思想.
2.使代码更加清晰,分工更加明确
将一些事件处理封装为监听事件,使各个代码块各司其职,只处理特定的事件,这样便达到了代码功能的单一性.
自定义事件监听
二.实现界面上标签和按钮所显示的信息周期性改变
类之间的关系
三.代码如下
NewsNorm接口
package eventListener;
/**
* 发送消息的格式
* @author Andrew
*
*/
public interface NewsNorm {
public byte getType();
public String getText();
}
TextNews类实现NewsNorm接口
package eventListener;
/**
* 发送文本信息
* @author Andrew
*
*/
public class TextNews implements NewsNorm{
private String str;
public TextNews(String str){
this.str = str;
}
public byte getType() {
return 0;
}
public String getText() {
return str;
}
}
ShowNews接口
package eventListener;
/**
* 组件显示消息的接口
* @author Andrew
*
*/
public interface ShowNews {
public void processNews(NewsNorm n);
}
LableModule自定义标签类
package eventListener;
import javax.swing.JLabel;
/**
* 自定义标签组件
* @author Andrew
*
*/
public class LableModule extends JLabel implements ShowNews{
public void processNews(NewsNorm n) {
String str = n.getText();
this.setText(str);
}
}
ProThread线程类
package eventListener;
import java.util.ArrayList;
import java.util.List;
/**
* 处理消息的线程
* @author Andrew
*
*/
public class ProThread extends Thread{
private List<ShowNews> list = new ArrayList<ShowNews>();
public void addNewsListener(ShowNews sh){
list.add(sh);
}
public void run(){
int num = 1;
while(true){
String str = "消息"+num;
for(int i=0; i<list.size(); i++){
NewsNorm n = new TextNews(str);
ShowNews sh = list.get(i);
sh.processNews(n);
}
num ++;
try {
Thread.sleep(600);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
自定义按钮类
package eventListener;
import java.awt.Dimension;
import javax.swing.JButton;
/**
* 自定义按钮监听事件
* @author Andrew
*
*/
public class ButtonModule extends JButton implements ShowNews{
public void processNews(NewsNorm n) {
String str = n.getText();
this.setText(str);
this.setPreferredSize(new Dimension(100,30));
}
}
程序入口
package eventListener;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
/**
* 程序入口
* @author Andrew
*
*/
public class Main {
/**
* 主函数
*/
public static void main(String[] args) {
Main m = new Main();
m.setUpFrame();
}
private void setUpFrame(){
JFrame frame = new JFrame("自定义事件监听");
frame.setSize(new Dimension(400,300));
frame.setLayout(new FlowLayout());
//实例化事件处理线程对象
ProThread pr = new ProThread();
//实例化自定义标签对象
LableModule la = new LableModule();
//实例化自定义按钮对象
ButtonModule bu = new ButtonModule();
pr.addNewsListener(bu);
pr.addNewsListener(la);
//启动消息处理线程
pr.start();
frame.add(la);
frame.add(bu);
frame.setVisible(true);
}
}
四.程序运行截图
- 大小: 33.9 KB
- 大小: 28.2 KB
- 大小: 18.8 KB
分享到:
相关推荐
JAVA 用户自定义事件...JAVA 用户自定义事件监听完整例子 JAVA 用户自定义事件监听完整例子 很多介绍用户自定义事件都没有例子,或是例子不全,下面写了一个完整的例子,并写入了注释以便参考,完整的实例源代码如下
自定义时间监听器,1、设计三个要素 事件源:被监听的对象 事件对象: 事件监听器: 2. 对某个源注册一个监听器,此源便成为一个事件源,当事件源上发生某一个动作时,监听器的某个方法将会被调用执行,在执行...
java 自定义Queue队列 java 自定义Queue队列
keycloak-kafka-事件监听器自定义事件监听器,将所有Keycloak事件发布到Kafka
java自定义 注解 annotation、标签库tag、监听listener、junit简单测试代码
主要介绍了Java使用自定义注解实现为事件源绑定事件监听器操作,结合实例形式分析了java自定义注解、注解处理、事件监听与响应等相关操作技巧,需要的朋友可以参考下
1.JAVA 监听文件夹变化 2.模拟POST提交文件流同步服务器文件
Spring框架作为Java开发的核心,其事件监听机制是理解和利用Spring的关键要素之一。这种机制基于观察者模式,由事件(ApplicationEvent)、事件监听器(ApplicationListener)和事件广播器...
android 自定义音量键seekBar 可监听系统电话状态,实现媒体音量和通话音量自动切换调整声音大小。
该demo只是实现定时监听、周期性执行任务的功能,而邮件发送、文件删除等自定义功能需要自行添加上去,只需在run方法下修改邮件发送、文件删除等功能即可;
如何接收事件?如何做到AS3.0的标准事件编程?...类似JAVA的监听或观察者模式 Event改变的部分很多,正在想怎样用一个有条理的方式来讲解Event和它相关的诸多内容,让我们感到比较容易理解,记忆和接受。
开发者可以自定义事件类和事件监听器,并通过应用程序上下文的publishEvent方法来发布事件,Spring框架会自动分发事件给所有对该事件感兴趣的监听器进行处理。事件监听机制帮助开发者更好地解耦代码,提高应用程序的...
完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第11章 AJAX实现(共11页).pptx 完整版Java web开发教程PPT...
android-eventlisteners
java源码流程审批 workflow V1.0 ydl-workflow基于SAAS服务,完美整合springboot + activiti5 + MyBatis 通用 Mapper + 分页插件 PageInfo! 说明 本项目 fork 自 的 ! 项目引入了下面依赖: <groupId>org....
# JAVA本地监听与远程端口扫描(源代码+论文).zip中文介绍 该压缩包包含了一个用JAVA语言编写的本地监听器和远程端口扫描器,以及相关的论文。 本地监听器可以在本地主机上监听指定的端口,等待外部主机的连接请求...
Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...
完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第11章 AJAX实现(共11页).pptx 完整版Java web开发教程PPT...
完整版Java web开发教程PPT课件 Java开发进阶教程 第10章 过滤器、监听器、自定义标签(共19页).pptx 完整版Java web开发教程PPT课件 Java开发进阶教程 第11章 AJAX实现(共11页).pptx 完整版Java web开发教程PPT...