java中事件处理探究
事件的触发可以源于用户,也可以用代码来主动设置事件的发生.如setSelected()
java.awt.event中
听众接口 | 事件类 | 适配器类 |
ComponentListener | ||
ContainerListener | ||
FocusListener | ||
KeyListener | ||
MouseListener | ||
MouseMotionListener | ||
WindowListener |
所有事件对象都是java.util.EventObject的子类.提供getSource方法用于返回对产生事件对象的引用
AWTEvent.
1. ChangeEvent它是一个轻量级事件,可与JSlider对象一起使用或其他.其重载方法为stateChanged().
2. ComponentEvent,在组件本身发生改变时调用.
ComponentListener方法调用 | ComponentEvent中的ID值 | 触发事件的组件状态改变 |
componentHidden() | COMPONENT_HIDDEN | hide |
compoentShown() | “““““` | ““ |
componentMoved() | ““ | “““““ |
componentResized() | ““““` | ““““` |
3.FocusEvent
FocusListener方法调用 | ||
focusGained() | ||
focusLost() |
4.InputEvent.
4.1KeyListener
keyPressed(),keyReleased(),keyTyped()(输入字符)
4.2MouseEvent
mouseClicked()单击鼠标,mouseEntered()光标进入组件区,mouseExited()光标离开组件区,mousePressed()按下鼠标,mouseReleased()放开鼠标
4.3MouseMotionListenr
mouseMoved()光标移到组件上,mouseDragged()按住鼠标并移动光标
5.InputMethodEvent,用于手写和语音输入
6.HierarchyEvent()与HierarchyListener,HirerarchyBoundsListener,组件层次关联的改变通知.
7.ContainerEvent容器对增删组件的监视.
componentAdded(),componentRemoved()
8.窗口产生事件.WindowEvent
WindowListener方法调用 | 触发事件的组件状态改变 | |
windowActivated() | 成为活动窗口,即栈顶窗口 | |
windowClosing() | 请求关闭操作,注意必须先setDefaultCloseOperation(DO_NOTHING_ON_CLOSE) | |
windowDeactivated() | ||
windowDeiconified() | 不再图标化,即取消最小化恢复 | |
windowIconified() | 窗口最小化 | |
windowOpened() | 首次显示 | |
closed() | 窗口关闭,相当于dispose(),关闭窗口和释放相关资源,,与隐藏是有区别的. |
9.AbstractButton是许多常用swing组件的父类,包括(JButton,JToggleButton,JCheckBox,JRadioButton,JMenu,JMenuItem,JRadioButtonMenuItem,JCheckBoxMenuItem)
每一个AbstractButtonAbstractButton子类生成一个ActionEvent,ChangeEvent,与ItemEvent().
AbstractButton的每个实例维护几个不同的属性:Pressed, true标识正在按按钮.Armed,true标识释放鼠标键会激活按钮.Enabled,表示是否能改变按钮状态,Rollover,true表示按钮启用行为..Selected,是否选择.
9.1.ActionEvent用于按钮,单击,文本enter等
actionPerformed(),
9.2 ItemSelectable,ItemEvent.
itemStateChanged(),
ItemEvent类定义定义了一个getStateChanged()方法,返回一个整数值.这个值可以是SELECTED ,DESELECTED.
10.JMenuItem中产生的.MenuDragMouseEvet
MenuKeyEvent
11.JMenu中产生的.MenuEvent.
menuCanceled(),menuDeselected(),menuSelected()
12.由JTextCompoentComponent(JTextArea,JTextPane,JTextField,JEditorPane)产生的事件(插入点事件,文本选择该表事件等)
12.1CaretEvent与CaretListener.提供两个方法.getDot()标识文本组件的插入点位置,getMark()标识选择块的起点..注意:起点值可能等于,大于或小于插入点位置,若起点值等于插入点位置,则没有选择文本.
caretUpdate()
12.2.JTextField可以注册ActionListener用于监听enter键,
12.3JEditorPane.可以显示不同类型的文本(如RTF,HTML文档)
当JEditorPane中嵌入超链接时,光标进入或离开,或单击超链接时产生事件HyperlinkEvent. hyperlinkUpdate(). HyperlinkEvent使用getEventType()返回内部类EventType实例引用,这个引用是EventType三个静态实例之一,用于标识激活,一进一出.
如if(event.getEventType()==HyperlinkEvent.EventType.ACTIVATED/ENTERED/EXITED){}.同时还提供getURL()返回链接的URL实例.getDescription()返回链接的文本描述.
13.由文档实现方法产生的事件.
在swing的MVC模型中,数据在文本组件中显示,它与文本组件是分开的.文本组件提供数据的视图,而javax.swing.text.Document接口的方法实现维护模型(即数据本身).
Document对象通过JComponent子类的对象的getDocument()方法取得.Document只支持普通文本,没有字符属性(即所有文本的字体,颜色均为相同的).但是
StyledDocument接口接口提供了各个字符属性制定支持.JTextComponent及其子类的每个实例有一个相关联的Document实现方法,维护在组件中显示的数据.JTextField与JTextArea默认用PlainDocument但也可以特意指定.
DocumentEvent在为文档发生某种改变时发生.注意DocumentEvent事件的源是Document而非它的显示组件.,getDocument()返回事件源的引用.getType()表示事件的性质(如插入文本,删除文本等),还提供getLength()与getOffset()表示改变影响的字符数,以及文档发生改变的位置偏移量.getChange()可以得到特定元素或文档组件的改变信息.
DocumentListener方法调用:changedUpdate()文本样式改变,insertUpdate()插入,removeUpdate()删除
13.1输入验证.应用程序通常需要限制或验证输入.(如文本字段可能只允许输入数字或要限制长度)
可以通过重写Document对象.
13.2UndoableEditEvent(文本撤消,重做)
完成步骤:1.生成javax.swing.undo.UndoManager实例,维护相关信息
2.生成请求,然后委托给UndoManager,由它进行相关操作
3.把文本组件的Dcoument注册为UndoableEditListener.收到UndoableEditEvent时,应该,通过addEdit()将其编辑信息加入UndoManager.
undoableEditHappened()
UndoManager有几个常用方法:canUndo(),canRedo()返回boolean值用于条件判断.
14.由JList产生的事件
ListSelectionEvent,重写的 valueChanged()
ListDataListener
15.由JComboBox产产生的事件(下拉)
ActionEvent与两个ItemEvent
16.由JPopupMenu生成的事件
PopupMenuEvent
17由ScrollBar产生的事件
AdjustmentEvent
18.JTree相关
java中事件处理探究的更多相关文章
- 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为
初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...
- 探究Java中的锁
一.锁的作用和比较 1.Lock接口及其类图 Lock接口:是Java提供的用来控制多个线程访问共享资源的方式. ReentrantLock:Lock的实现类,提供了可重入的加锁语义 ReadWrit ...
- 探究Java中的引用
探究Java中的四种引用 从JDK1.2版本开始,Java把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用.本篇就来详细探究 ...
- Java中toArray的用法探究(java数组与list转换)
转载原文地址: http://blog.csdn.net/guopengzhang/article/details/5497875 一. Incident import jav ...
- Java中Iterator(迭代器)的用法及其背后机制的探究
在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结 ...
- 探究Java中Map类
Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部 ...
- 深入探究Java中equals()和==的区别是什么
目录 相等判断符"==" "=="判断基本类型数据 "=="判断引用类型数据 相等判断方法equals() 思考:为什么要设计equals( ...
- 【转】转帖并注释:Java中的事件处理机制--事件监听器的四种实现方式
原文地址:http://blog.sina.com.cn/s/blog_4b650d650100nqws.html Java中四种事件监听器的实现方式分别为: 自身类做为事件监听器 外部类作为事件监听 ...
- 关于Java中枚举Enum的深入剖析
在编程语言中我们,都会接触到枚举类型,通常我们进行有穷的列举来实现一些限定.Java也不例外.Java中的枚举类型为Enum,本文将对枚举进行一些比较深入的剖析. 什么是Enum Enum是自Java ...
随机推荐
- Selenium终极自动化测试环境搭建(二):Selenium+Eclipse+Python
前面举例了Selenium+Eclipse+Junit+TestNG自动化测试环境的搭建,在前一篇的基础上,下面再举例Selenium+Eclipse+Python测试环境搭建. 第一步:安装Pyth ...
- devi into python 笔记(二)元组 变量声明 和列表解析
元组tuple: 类似list,只是tuple是不可变的list.类似java的String都是不可改变的.注意:tuple没有方法(有待考证),不可以像list那样那个list.pop 或者list ...
- JavaScript高级程序设计33.pdf
操作样式表 CSSStyleSheet类型表示的是样式表包括通过<link>元素包含的样式表和在<style>元素中定义的样式表,前面提到过这两个元素本身分别是由HTMLLin ...
- hdoj 1789 Doing Homework again
Doing Homework again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- SqlCommand对象
SqlCommand对象以及如何使用它与数据库交互 1.什么是command对象2.如何使用ExecuteReader方法查询数据3.如何使用ExecuteNonQuery方法插入和删除对象4.如何使 ...
- Spring各种注解标签作用详解
@Autowired和@Resource等注解是将Spring容器中的bean注入到属性,而@Component等注解是将bean放入Spring容器中管理. @Autowired spring2.1 ...
- 2016-5-19模拟测试 bzoj3652 bzoj3653 bzoj3654
T1 description 给定正整数\(n\),定义\(f(x) = \max{y \ \mathrm{xor}\ x}(y<n)\) \(x\)在\([0,n)\)随机取值,求\(f(x) ...
- opencv学习笔记-图像对比度、亮度调节
在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式: 在图像像素中其中: 参数f(x)表示源图像像素. 参数g(x) 表示输出图像像素. 参数a(需要满足a>0)被称为增 ...
- C# richTextBox编辑器
附件:http://files.cnblogs.com/xe2011/CSHARP_RichTextBoxEditor.rar 完整的转到这里 http://www.cnblogs.com/xe201 ...
- FastDFS分布文件系统[转]
FastDFS是为互联网应用量身定做的一套分布式文件存储系统,非常适合用来存储用户图片.视频.文档等文件.对于互联网应用,和其他分布式文件系统相比,优势非常明显.具体情况大家可以看相关的介绍文档,包括 ...