Java处理自定义事件

标签 java events listener

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

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

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

我读了一些有关监听器的内容,但我不明白如何处理它,因为我现在需要它们。

考虑到我现在的问题是:

  • 这些类(class)有什么不好的地方吗?
  • 如何以最佳/最简单的方式将这些监听器添加到我的 Entity 类中?

提前致谢。

编辑:

我已经添加了你所说的所有方法。现在我有两个名为 eventListenersmotionListenersList 对象,每个对象都有自己的添加和删除功能。

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

private void iterateListeners()
{
    for (Object obj : eventListeners.toArray())
    {
        AppEntityEventListener l = (AppEntityEventListener) obj;
        Event e = new Event(this, Event.ACTION_EVENT, this);

        l.onCreated(e);
        l.onDeleted(e);
        l.onSelected(e);
        l.onStepped(e);
    }

    // ... other listener ...
}

此时如何处理Event?这是正确的方法吗,我真的不知道......上面的代码很直观。

最佳答案

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

这些方法应该简单地向监听器集合添加监听器或从监听器集合中删除监听器,并且对象应该迭代此集合并在适当时调用 onXxx() 方法。

关于Java处理自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10461469/

相关文章:

java - 以编程方式取消部署 war 文件 (Wildfly 18.x)

java - Android中如何在广播接收器被触发之前启动服务?

java - 从 JavaFX 2.2 升级到 JavaFX 8 的问题(可能是错误?)

java - 如何制作android下载事件?

windows-phone-7 - Windows Phone - 用户控件中的 OnNavigatedTo 和 OnNavigatedFrom

linux - 使用 webhooks 设置网络服务器部署的标准方法

mysql - 是否可以在 MySQL 中回滚 CREATE EVENT?

swift - UITextView 点击事件设置 UITableView 可见

python - 如何避免 "on_press"监听器事件循环?

Android-AnimatorSet 监听器不工作