0

タブとツールバーボタンからイベントリスナーを削除できません。

ツールバーボタンにイベントリスナーを追加しましたが、保存部分を実行した後、リスナーを削除できません。

exitButtonですtoolbarbutton

両方のメソッドは同じクラスにあります。しかし、初回exitButtonはイベントに関していくつかの異なるロジックがonClickありますが、データを保存し、disable()経由でメソッドを呼び出してイベントリスナーglobalcommandを削除するとします。onClick

@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
    Selectors.wireComponents(view, this, false);
    exitButton.addEventListener("onClick", new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("adddingggg");
        }
    });
}

@GlobalCommand
public void disable() {
    exitButton.removeEventListener("onClick", new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("remocvee");
        }
    });
}

保存後にイベントリスナーを削除するにはどうすればよいですか?

4

1 に答える 1

1

以前に追加されたリスナーに対して呼び出され たパラメータである場合、EventListenerインスタンスはを返す必要があることに注意してください。true
Object#equal

EventListener evl;

@AfterCompose
public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
    Selectors.wireComponents(view, this, false);
    exitButton.addEventListener("onClick", evl = new EventListener<Event>() {

        public void onEvent(Event evt) throws Exception {
            Messagebox.show("adddingggg");
        }
    });
}

@GlobalCommand
public void disable() {
    if(exitButton.removeEventListener("onClick", evl))
            Messagebox.show("success");
}

これにより、EventListenerが削除され、成功した場合はメッセージが表示されます。
問題は、新しいオブジェクトを作成したため、古いオブジェクトと等しくないことでした。

于 2013-01-18T07:23:11.687 に答える