Java处理自定义事件

时间:2012-05-05 11:37:58

标签: java events listener

我目前正在开发一个简单的2D游戏库,仅供自学。 直到知道一切都按预期工作。

现在我正计划由'游戏流'(例如计时器)或实体本身触发的运动和事件。我想知道是否可以拥有像'EntityEventListener'和'EntityMotionListener'这样的自定义事件。然后我看了一下MouseListener及其父类。然后我为每个监听器写了一个监听器接口和一个这样的适配器类:

public interface AppEntityEventListener extends EventListener
{
    void onCreated(Event e);
    void onDeleted(Event e);
    void onStepped(Event e);
    void onSelected(Event e);
}

public abstract class AppEntityEventAdapter implements AppEntityEventListener
{
    @Override public void onCreated(Event e) { } 
    @Override public void onDeleted(Event e) { } 
    @Override public void onStepped(Event e) { } 
    @Override public void onSelected(Event e) { }
}

我发现我只能将听众添加到Components,而Entity类不是分别来自Component JComponent。 / p>

我读了一些关于听众的内容,但我不知道如何处理它,因为我现在需要它们。

考虑到我现在的问题:

  • 这些课有什么坏处吗?
  • 如何以最佳/最简单的方式将这些听众添加到Entity班级?

提前致谢。

修改

我添加了你说过的所有方法。所以现在我有两个名为List的{​​{1}}个对象,eventListeners每个都有自己的添加和删除功能。

我还有一个关于迭代的问题,使用以下代码:

motionListeners

此时如何处理此事件?这是正确的方式我真的不知道......上面的代码只是直观的。

2 个答案:

答案 0 :(得分:1)

您可以将侦听器添加到您喜欢的任何对象,前提是该对象具有允许添加(和删除)侦听器的方法。只需向对象添加addXxxListener()/removeXxxListener()方法即可。

这些方法应该简单地向/从侦听器集合添加/删除侦听器,并且对象应该遍历此集合并在适当时调用onXxx()方法。

答案 1 :(得分:0)

查看框架潮http://abyu.github.io/tide/是否可以为您提供帮助。使用潮流,您可以创建自己的事件,提升并处理这些事件。