当前位置: 技术问答>java相关
关于Explicit Event Enabling的问题?
来源: 互联网 发布时间:2015-03-20
本文导语: 各位大虾,我学到Event Delegation Model的时候,遇到了一个难点,即Explicit Event Enabling. 我看了书以后,个人的看法是整个模型的运作顺序是 1.组件实例激发了一个事件 2.组件实例调用了它自己的一个方法proc...
各位大虾,我学到Event Delegation Model的时候,遇到了一个难点,即Explicit Event Enabling.
我看了书以后,个人的看法是整个模型的运作顺序是
1.组件实例激发了一个事件
2.组件实例调用了它自己的一个方法processEvent()
3.方法processEvent()将事件委托给一个更加详细的processXXXEvent()
4.在方法processXXXEvent()中调用已经注册的监听接口的适当的事件处理方法
不知道我的看法对不对?各位大虾请多多指教.详细的说说事件委托模型的运作原理.
另外,我试着写了一个程序,实践一下Explicit Event Enabling,但是遇到了一个问题,就在注释的地方,请问那里应该怎么写?
import java.awt.*;
import java.awt.event.*;
public class SL275 extends Frame
{
public static void main(String[] args)
{
SL275 s=new SL275();
}
public SL275()
{
MyBtn mbtn=new MyBtn("MyBtn");
mbtn.addActionListener(); // ???就是这里,这句应该怎么写呢?
add(mbtn);
setBounds(100,100,200,200);
setVisible(true);
}
}
class MyBtn extends Button
{
public MyBtn(String label)
{
super(label);
enableEvents(AWTEvent.ACTION_EVENT_MASK);
}
public void processActionEvent(ActionEvent ae)
{
super.processActionEvent(ae);
System.out.println("Explicit Enabling Event");
}
}
我看了书以后,个人的看法是整个模型的运作顺序是
1.组件实例激发了一个事件
2.组件实例调用了它自己的一个方法processEvent()
3.方法processEvent()将事件委托给一个更加详细的processXXXEvent()
4.在方法processXXXEvent()中调用已经注册的监听接口的适当的事件处理方法
不知道我的看法对不对?各位大虾请多多指教.详细的说说事件委托模型的运作原理.
另外,我试着写了一个程序,实践一下Explicit Event Enabling,但是遇到了一个问题,就在注释的地方,请问那里应该怎么写?
import java.awt.*;
import java.awt.event.*;
public class SL275 extends Frame
{
public static void main(String[] args)
{
SL275 s=new SL275();
}
public SL275()
{
MyBtn mbtn=new MyBtn("MyBtn");
mbtn.addActionListener(); // ???就是这里,这句应该怎么写呢?
add(mbtn);
setBounds(100,100,200,200);
setVisible(true);
}
}
class MyBtn extends Button
{
public MyBtn(String label)
{
super(label);
enableEvents(AWTEvent.ACTION_EVENT_MASK);
}
public void processActionEvent(ActionEvent ae)
{
super.processActionEvent(ae);
System.out.println("Explicit Enabling Event");
}
}
|
你所说的这个模型是java1使用的事件模型,java2中已经被淘汰了。
在使用这个模型时不用添加监听器,只需要重载对应的事件处理方法就可以了。利用事件监听器处理事件是java2中的事件处理模型,和你的方法就不一样了。
对于事件模型1,你去掉你有问题的那句话就可以,对于事件模型2,你使用下面的方法:
import java.awt.*;
import java.awt.event.*;
public class SL275 extends Frame
{
public static void main(String[] args)
{
SL275 s=new SL275();
}
public SL275()
{
Button mbtn=new Button("MyBtn");
mbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Explicit Enabling Event");
}
}); // ???就是这里,这句应该怎么写呢?
add(mbtn);
setBounds(100,100,200,200);
setVisible(true);
}
}
在使用这个模型时不用添加监听器,只需要重载对应的事件处理方法就可以了。利用事件监听器处理事件是java2中的事件处理模型,和你的方法就不一样了。
对于事件模型1,你去掉你有问题的那句话就可以,对于事件模型2,你使用下面的方法:
import java.awt.*;
import java.awt.event.*;
public class SL275 extends Frame
{
public static void main(String[] args)
{
SL275 s=new SL275();
}
public SL275()
{
Button mbtn=new Button("MyBtn");
mbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Explicit Enabling Event");
}
}); // ???就是这里,这句应该怎么写呢?
add(mbtn);
setBounds(100,100,200,200);
setVisible(true);
}
}
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。