java中的事件处理,适用于vb.net专家
我找到了大量关于处理现有java类的事件的帖子,但没有找到任何关于从头创建带有事件的类的帖子。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
这个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();
}
}