java中的事件处理,对于vb.net专家
Posted
技术标签:
【中文标题】java中的事件处理,对于vb.net专家【英文标题】:Event handling in java, for a vb.net expert 【发布时间】:2012-12-16 10:06:22 【问题描述】:我发现了大量关于处理现有 java 类的事件的帖子,但没有关于从头开始创建具有事件的类。 这个 vb.net sn-p 的 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
谢谢。
【问题讨论】:
【参考方案1】:这里有一个关于 Java 事件模型背后的“理论”的很好的链接:
http://docs.oracle.com/javase/1.4.2/docs/guide/awt/1.3/designspec/events.html这里有一个链接说明如何创建您自己的自定义事件:
http://castever.wordpress.com/2008/07/31/how-to-create-your-own-events-in-java/这是来自SO的一个非常好的例子:
// REFERENCE: https://***.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();
关键是:
1) 创建一个“接口”来定义你的“事件”(例如 AWT 事件模型中的事件)
2) 创建一个“实现”此事件的类(类似于 C 等语言中的“回调”——有效地,VB 会自动为您使用“事件”类型)。
'希望能有所帮助......至少一点点!
【讨论】:
我只想补充一点,事件处理通常使用观察者设计模式来解决。 @paulsm4 为您提供了一个示例。如果你在谷歌上搜索“观察者模式”,你会发现很多关于它的文献。这里还有一个例子:searchdaily.net/observer-pattern-java-example @Paulo Silva - 你是绝对正确的。事实上,上面的例子是明确写成Observer Pattern的例子 谢谢,它有帮助,但是在看了你的回答后,我有另一个问题:是否可以为同一个类的两个实例创建两个不同的侦听器?比如:Sub Obj1OnEvent() Hndles Obj.Event Sub Obj2OnEvent() Hndles Obj.Event
以上是关于java中的事件处理,对于vb.net专家的主要内容,如果未能解决你的问题,请参考以下文章
使用VB在ASP.Net中对GridView中的事件进行排序