【发布时间】:2018-06-07 14:19:15
【问题描述】:
我创建了一个 JFrame。这个 JFrame 包含一个 JLabel,其中包含一些 JButton。 JButton 有一个 ActionListener(称为 MainFrameListener)。单击arrowButton 按钮时,代码将执行一个方法。此方法从带有 foodButton.removeActionListener(new MainFrameListener()); 的旧按钮中删除所有 ActionListeners
虽然我删除了监听器,但按钮仍然有两个按钮。 当然,我已经在互联网上搜索以解决问题,我发现一行代码显示了一个按钮的侦听器数量。
System.out.println("Count of listeners: " + ((JButton) e.getSource()).getActionListeners().length);
我第一次点击按钮时 Java 说有两个按钮。当我单击arrowButton 时,会打开另一个菜单并删除按钮。这就是我想要的。当我单击arrowBackButton 时,应用程序将我发送回 MainFrame。那很完美。但是当我再次单击arrowButton 时,控制台说我有两个为按钮注册的侦听器。并且点击时发出的声音会播放两次。
我不明白,因为我删除了侦听器。有没有更好的方法来移除 Listeners?
【问题讨论】:
-
给新手的好问题,欢迎投票 ;-)
标签: java swing awt actionlistener