削除方法は、MouseListener/ActionListenerは、JTextField
-
26-09-2019 - |
質問
私は、以下のコードを添加する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;
}
しっくりくるかもしれませんの三つので、これまでにない柔軟性としたい場合は左マウスリスナーにもないただし、新しいオブジェクトです。
所属していません StackOverflow