当前位置: 首页 > 面试题库 >

Java自定义事件处理程序和侦听器

公羊晟
2023-03-14
问题内容

我目前正在研究Socket.io的Java实现,可从此处获取:netty-
socketio

我已经启动并运行了服务器,并且它在客户端和服务器之间很好地接收/发送消息,但是我需要让某些消息被接收时触发事件,这就是我的困惑。

这是我的代码

server.addEventListener("message", clientData.class, new DataListener<clientData>() {
        @Override
        public void onData(SocketIOClient client, clientData data, AckRequest ackRequest) throws Exception {
            System.out.println("Message from client: " + data.getMessage());

        }

    });



public class clientData{

String message;

public String getMessage() {
    return message;
}

public void setMessage(String message) {
    this.message = message;
}

}

本质上,我想发生的是从客户端收到特定消息时,我需要另一个类中的函数才能运行。我花了持续两个小时阅读ObservableObserverInterfaces和事件处理程序,但我真的不知道如何处理此问题。

库中也提到了这一点DataListener,但是我不知道那是什么,因为库中几乎没有文档。

任何意见或建议,将不胜感激。

谢谢


问题答案:

假设您引发该事件的班级称为A。需要监听事件的类称为B。该事件称为SomeEvent

首先,创建一个名为的接口SomeEventListener

public interface SomeEventListener {
    void onSomeEvent ();
}

如果有事件发生时要传递的参数(通常是有关事件的某些内容),则可以将其添加到方法中。

然后在中A,添加一个字段:

private SomeEventListener listener;

和方法:

public void setSomeEventListener (SomeEventListener listener) {
    this.listener = listener;
}

这样,B可以调用setSomeEventListener来设置监听器。

事件发生时,A应致电

if (listener != null) listener.onSomeEvent ();

这就是全部A

在中B,您需要实现接口:

public class B implements SomeEventListener {
    public void onSomeEvent () {
        //do whatever you like when SomeEvent happens.
    }
}

您可以这样听SomeEvent

someInstanceOfA.setSomeEventListener (this);

并在此呼叫之后,可以听到所有SomeEvent由发出的A声音B

使用Observable和Observer模式,我们可以看到它A是一个Observable,B也是一个Observer。

这很简单!



 类似资料:
  • 我试图在更新整数值时激发事件,但失败了。下面是我使用的代码: 我是不是漏掉了什么?

  • 问题内容: 谁能给我一个创建事件和处理程序的自定义集的示例。假设您有一个Person对象,您希望小部件知道它是否已更新。 您创建了一个HandlerManager,现在您必须创建一个Event和一个Handler。您将如何定义这些类,以便可以订阅和引发事件? 大多数事件都是基于DOM的,而我想创建一些自定义事件和处理程序,这些事件和处理程序可以在任何基于浏览器的事件之外触发。 问题答案: 这是一个

  • 女士们先生们晚上好, 我有一个Java Swing的问题,我无法解决,也许你可以帮助我。在这里: 我有一个使用BorderLayout的JFrame和许多JPanel 每次我需要设置一个新屏幕(即,从主菜单,当单击搜索按钮时,转到搜索菜单),我只需删除位于中心的组件(JPanel),并将新屏幕(新JPanel)放在中心 这样,我不会在每次我想显示新屏幕时调用所有的页眉和页脚对象 这个系统一切正常,

  • 可以通过实现接口或扩展任何现有的实现来创建自己的自定义处理程序。 在下面的示例中,我们通过扩展类创建了自定义处理程序。 为了理解上述与DBUtils相关的概念,让我们编写一个将运行读取查询的示例。 创建一个示例应用程序。 更新在DBUtils入门程序中创建的文件:MainApp.java。 按照下面的说明编译并运行应用程序。 以下是的内容。 以下是文件的内容。 以下是文件的内容。 完成创建源文件后

  • 问题内容: 我想知道是否有人可以帮助我理解如何准确地创建不同的自定义事件侦听器。 我没有事件的具体案例,但我想大致了解它是如何完成的,因此可以将其应用于需要的地方。 我想做的是,以防万一有些人可能需要知道的是: 问题答案: var evt = document.createEvent(“Event”); evt.initEvent(“myEvent”,true,true);

  • 问题内容: 假设我想为自己的班级创建自己的事件监听器,该怎么做?我需要手动维护线程吗? 问题答案: 创建一个将由您的活动实现的接口: 现在,您需要知道事件实际发生的时间。例如,当用户触摸屏幕上的一个点时,重写onTouchEvent方法: 同样,您可以创建所需的特定事件。(示例可能是按下,等待2秒钟然后松开-您需要在touch事件中执行一些逻辑操作)。 在您的活动中,可以使用customView对