java删除netbeans中的鼠标侦听器
在netbeans中,会自动为组件创建鼠标侦听器
private void initComponents() {
jLabel9 = new javax.swing.JLabel();
jLabel9.setBackground(new java.awt.Color(150, 192, 206));
jLabel9.setOpaque(true);
jLabel9.setPreferredSize(new java.awt.Dimension(150, 150));
jLabel9.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel9MouseClicked(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
jLabel9MouseEntered(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
jLabel9MouseExited(evt);
}
});
问题是如何通过函数删除鼠标点击事件的侦听器?我正在尝试这样做:
void rem(){
jLabel9.removeMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel9MouseClicked(evt);
}
});
}
然后我根据程序流的要求调用这个函数。但这不管用。有一件事我已经弄明白了(尽管我不确定这一点),那就是这不起作用,因为我没有通过原始适配器删除侦听器。相反,我创建了一个新的,并试图删除原来的侦听器。我在谷歌上搜索了几乎所有有效的链接,但没有一个有用
# 1 楼答案
就像佐尔特埃贝尔说的那样。 类测试{
# 2 楼答案
你的MouseListener推荐人呢?你用的是匿名的鼠标听器。你自己发现你在
removeMouseListener()
方法中删除了一个新的MouseListener。为什么?因为你不能再访问你原来的听众了。为它创建一个参考,你的问题就解决了替代解决方案,但第一个更容易: