繁体   English   中英

从 JButton 中移除一个 ActionListener

[英]Remove an ActionListener from JButton

我想从JButton中删除动作侦听器。 但是我有一个像这样的ActionListener

btn.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
          btn.removeActionListener();
     }
});

但是btn.removeActionListener(); 需要括号内的参数,所以我有点难过。

获取动作监听器。

如果您阅读AbstractButton API ,JButton 有一个public ActionListener[] getActionListeners() ,它为您提供一组侦听器。 获取它们(可能只有一个),然后从按钮中删除它(如果有多个,则使用 for 循环删除它们)。

例如

ActionListener[] listeners = btn.getActionListeners();
for (ActionListener listener : listeners) {
    btn.removeActionListener(listener);
}

话虽如此,我想知道这是否可能是XY 问题,更好的解决方案是采用不同的方法。 也许您只需要在侦听器中放置一个 boolean 语句,并根据 class 中的标志(布尔字段)的 state 改变其行为(它调用的代码)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM