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 に答える