您的当前位置:首页正文

Java AWT定制事件

2023-08-12 来源:步旅网
一、新事件的编写:

① 新事件要继承AWTEvent类;

② 新事件的构造函数中的参数为事件源的对象,这样就在构造新事件对象中就可以知道事件源是谁了,就可以通过事件源的对象调用事件源的public方法了。 ③ 给新事件一个ID,但要保证此ID不是AWT已定义事件的ID,可以这样public static final int Xxx_EVENT=AWTEvent.RESERVED_ID_MAX+整数,在将这个ID传递给构造函数。 如:

class XxxEvent extends AWTEvent {

public XxxEvent(事件源类 eventsource){ super(eventsource,Xxx_EVENT); } public static final int Xxx_EVENT = AWTEvent.RESERVED_ID_MAX+201; }

二、新接口的编写:

① 新接口要继承EventListener接口; ② 定义新接口中的方法; 如:

interface XxxListener extends EventListener {

method1; method2; ... }

三、事件源的编写:

① 事件源要继承Component或者JComponent

(1) 如果继承了Component了,那么你将会碰列一个问题:从AWT队列中删除事件并把事件分发到事件源的AWT代码,只在能确信组件可以支持新事件模型时,才会传递这些事件。使它确信的方法是调用Component类中的enableEvents方法。该方法有一个参数,这个参数给出了你希望该组件能启用的AWT事件掩码。如果你根本不在乎AWT事件。就像对于定制事件源的情况,你可以把该参数设为0。因此如果你的事件类扩展了Component类,那么你应该在构造器中放置一个调用enableEvents(0)的代码。

(2) 而继承了JComponent则不存在这样的问题。 ① 构造监听器列表 listenerList = new EventListenerList(); ② 增加注册监听器的方法:

addXxxListener(XxxListener listener) {

listener.add(XxxListener.class,listener); }

③ 增加移除监听器的方法:

removeXxxListener(XxxListener listener) {

listener.remove(XxxListener listener); }

④ 为你想要响应的行动构造新事件的对象;

⑤ 获得AWT事件队列的引用;

⑥ 将新事件的对象加到AWT事件列表中;

⑦ 重写processEvent(AWTEvent event)方法,当由此事件源产生的事件从AWT队列中删除时就会调用此事件源此方法: processEvent(AWTEvent event) {

从监听器列表中得到你想要的监听器类型的监听器对象; 调用每个监听器对象的相应方法; }

因篇幅问题不能全部显示,请点此查看更多更全内容