Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JButton中删除ActionListener_Java_Swing_Awt_Jbutton_Actionlistener - Fatal编程技术网

Java 从JButton中删除ActionListener

Java 从JButton中删除ActionListener,java,swing,awt,jbutton,actionlistener,Java,Swing,Awt,Jbutton,Actionlistener,我想从JButton中删除操作侦听器。但是我有一个ActionListener像这样: btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { btn.removeActionListener(); } }); 但是btn.removeActionListener()需要括号内的参数,所以我有点困惑。获取ActionListener

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

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

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

获取ActionListener

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

比如说

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

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

获取ActionListener

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

比如说

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

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

btn.removeActionListener(this)JButton
”中删除操作侦听器。这不起作用。。为什么?根据该问题的答案(是的,我希望看到答案),最好为按钮创建一个
操作
。可以禁用
操作
,这样做会向用户指示按钮不可用。假设按钮位于主菜单上,但每次调用主菜单时,它都会添加另一个操作侦听器。尽管我刚刚解决了它,谢谢。
btn.removeActionListener(这个)JButton
”中删除操作侦听器。这不起作用。。为什么?根据该问题的答案(是的,我希望看到答案),最好为按钮创建一个
操作
。可以禁用
操作
,这样做会向用户指示按钮不可用。假设按钮位于主菜单上,但每次调用主菜单时,它都会添加另一个操作侦听器。虽然我刚刚解决了,谢谢。我有点困惑。对不起,我对编码还不熟悉。这是for循环只是制作actionlistener的另一种方法吗?我的意思是,当我点击按钮时,foorloop中的任何东西都会激活?因为它不工作。@L0raxeoC:???不,它与创建另一个ActionListener无关。您的评论让我感到困惑,因为for循环完全按照您的要求执行--删除给定按钮的所有操作侦听器。我有点困惑。对不起,我对编码还不熟悉。这是for循环只是制作actionlistener的另一种方法吗?我的意思是,当我点击按钮时,foorloop中的任何东西都会激活?因为它不工作。@L0raxeoC:???不,它与创建另一个ActionListener无关。您的评论让我感到困惑,因为for循环完全按照您的要求执行--删除给定按钮的所有操作侦听器。