質問

私は、以下のコードを添加するActionListenerをJTextField:

chatInput.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
       chatInputMouseClicked(evt);
    }
});

現在表示されているこのMouseListenerを使用 chatInput.removeMouseListener(), これは、この機能のニーズの引数?

役に立ちましたか?

解決

だと考えていただき3つのアプローチ:

1)保存基準へのリスナーを追加する前に、で外すことも可能ですので、後:

MouseListener ml = new MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
        chatInputMouseClicked(evt);
    }
};
chatInput.addMouseListener (ml);
...
chatInput.removeMouseListener (ml);

2)すべて特定のイベントリスナーにディスパッチを当社コルレス先の取扱方法のように:

public MouseListener[] getMouseListeners()  

または

public EventListener[] getListeners(Class listenerType)

こちらはjavadocsの ます。の場合を識別できるすべてのリスナーを削除したい場合は削除したいすべてのリスナーがこのアプローチがあります。


3)を利用する事ができbooleanる変数'off'おスです。くしたいのですがそのあるべき分野の外側のクラス:

private boolean mouseListenerIsActive;

public void doSmthWithMouseListeners () {
    mouseListenerIsActive = true;

    chatInput.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent evt) {
            if (mouseListenerIsActive) {
               chatInputMouseClicked(evt);
            }
        }
    });
}

public void stopMouseListner () {
    mouseListenerIsActive = false;
}

しっくりくるかもしれませんの三つので、これまでにない柔軟性としたい場合は左マウスリスナーにもないただし、新しいオブジェクトです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top