Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的事件处理,适用于vb.net专家_Java_Events_Event Handling - Fatal编程技术网

java中的事件处理,适用于vb.net专家

java中的事件处理,适用于vb.net专家,java,events,event-handling,Java,Events,Event Handling,我找到了大量关于处理现有java类的事件的帖子,但没有找到任何关于从头创建带有事件的类的帖子。 这个vb.net代码段的java翻译是什么 Public Class TestClass Event TestEvent() Sub TestFunction() RaiseEvent TestEvent() End Sub End Class Public Class Form1 Dim WithEvents TC As New TestClass

我找到了大量关于处理现有java类的事件的帖子,但没有找到任何关于从头创建带有事件的类的帖子。
这个vb.net代码段的java翻译是什么

Public Class TestClass
    Event TestEvent()
    Sub TestFunction()
        RaiseEvent TestEvent()
    End Sub
End Class
Public Class Form1
    Dim WithEvents TC As New TestClass
    Sub OnTestEvent() Handles TC.TestEvent
    End Sub
End Class
谢谢。

这里有一个关于Java事件模型背后的“理论”的好链接:

下面的链接演示了如何创建自己的自定义事件:

下面是一个非常好的例子:

//参考:https://stackoverflow.com/questions/6270132/create-a-custom-event-in-java
导入java.util.*;
接口HelloListener{
有人说:();
}
类发起者{
列表侦听器=新的ArrayList();
public void addListener(HelloListener toAdd){
添加(toAdd);
}
公共空间{
System.out.println(“你好!!”;
//通知所有可能感兴趣的人。
对于(HelloListener hl:听众)
有人说:();
}
}
类响应程序实现HelloListener{
@凌驾
有人说公共空间无效{
System.out.println(“你好…”);
}
}
课堂测试{
公共静态void main(字符串[]args){
启动器启动器=新启动器();
Responder Responder=新的Responder();
Initiator.addListener(响应者);
发起者:sayHello();
}
}
关键是:

1) 创建一个定义“事件”的“接口”(例如AWT事件模型中的事件)

2) 创建一个类来“实现”这个事件(类似于C语言中的“回调”——实际上是VB用“事件”类型自动为您做的事情)


“希望这有助于。。。至少有一点点

我只想补充一点,事件处理通常是使用观察者设计模式来解决的@paulsm4为您提供了一个例子。如果你在谷歌“观察者模式”上搜索,你会发现很多关于这方面的文献。这里还有一个例子:@Paulo Silva-你完全正确。事实上,上面的例子是明确地作为感谢的例子写的,这很有帮助,但是在看了你的答案之后,我有另一个问题:有可能为同一个类的两个实例创建两个不同的侦听器吗?类似于:
Sub Obj1OnEvent()Hndles Obj.Event Sub Obj2OnEvent()Hndles Obj.Event
// REFERENCE: https://stackoverflow.com/questions/6270132/create-a-custom-event-in-java
import java.util.*;

interface HelloListener {
    public void someoneSaidHello();
}


class Initiater {
    List<HelloListener> listeners = new ArrayList<HelloListener>();

    public void addListener(HelloListener toAdd) {
        listeners.add(toAdd);
    }

    public void sayHello() {
        System.out.println("Hello!!");

        // Notify everybody that may be interested.
        for (HelloListener hl : listeners)
            hl.someoneSaidHello();
    }
}


class Responder implements HelloListener {
    @Override
    public void someoneSaidHello() {
        System.out.println("Hello there...");
    }
}


class Test {
    public static void main(String[] args) {
        Initiater initiater = new Initiater();
        Responder responder = new Responder();

        initiater.addListener(responder);

        initiater.sayHello();
    }
}