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循环完全按照您的要求执行--删除给定按钮的所有操作侦听器。