首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除netbeans中的鼠标侦听器

删除netbeans中的鼠标侦听器
EN

Stack Overflow用户
提问于 2017-01-27 16:27:16
回答 2查看 1.9K关注 0票数 0

在netbeans中,会自动为组件创建鼠标侦听器。

代码语言:javascript
复制
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);
        }
    });

问题是如何通过函数删除鼠标单击事件的侦听器?我试着做这样的事情:

代码语言:javascript
复制
void rem(){
   jLabel9.removeMouseListener(new java.awt.event.MouseAdapter() {
        public void mouseClicked(java.awt.event.MouseEvent evt) {
            jLabel9MouseClicked(evt);
        }
     });
}

然后,我将按照我的程序流的要求调用这个函数。但这不管用。有一件事我已经弄清楚了(尽管我不确定这一点),这是不起作用的,因为我没有通过原来的适配器删除侦听器。相反,我正在创建一个新的监听器,并试图删除原来的侦听器。我在谷歌上搜索了几乎每一个有效的链接,但是没有任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-27 17:13:47

您的MouseListener引用在哪里?您使用的是匿名MouseListener。您自己发现正在删除removeMouseListener()方法中的一个新的removeMouseListener()。为什么?因为您不能再访问原始侦听器了。为它创建一个参考,你的问题就解决了。

代码语言:javascript
复制
   MouseListener mListener = new MouseListener(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);
        }
    });



jLabel9.addMouseListener(mListener);
jLabel9.removeMouseListener(mListener);

可供选择的解决方案,但第一种解决方案要容易得多:

代码语言:javascript
复制
MouseListener[] mListener = jLabel9.getMouseListeners();
for (MouseListener ml : mListener) {
    jLabel9.removeMouseListener(ml);
}
票数 1
EN

Stack Overflow用户

发布于 2017-01-27 17:19:12

就像佐尔特·贝尔说的那样。类测试{

代码语言:javascript
复制
JLabel jLabel9 = new JLabel();
MouseAdapter adapter = new 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);
    }
};

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(adapter);
}

void rem() {
    jLabel9.removeMouseListener(adapter);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41898587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档