4

我发现了大量关于处理现有 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

谢谢。

4

1 回答 1

3

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

这是一个链接,说明了如何创建自己的自定义事件:

这是来自SO的一个非常好的例子:

// 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();
    }
}

关键是:

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

2)创建一个“实现”此事件的类(类似于 C 等语言中的“回调” - 并且有效地使用“事件”类型自动为您做 VB)。

'希望这会有所帮助......至少有一点点!

于 2013-01-01T23:44:39.530 回答