编程语言
首页 > 编程语言> > java – 鼠标适配器的范围

java – 鼠标适配器的范围

作者:互联网

我很想知道在这种情况下MouseAdapter的范围是什么.

class foo extends JPanel()
{
  private JMenu edit = new JMenu();
  public foo()
  {
      this.edit.getItem(0).addMouseListener(new MouseAdapter(){ 
          @Override
          public void mouseClicked(MouseEvent e) {
              if (e.getClickCount() == 1) {
                  edit.getItem(0).setEnabled(true);
              }
          } 
      });
  }
}

我认为MouseAdapter可以访问变量edit,因为新声明的MouseAdapter是类foo的内部类.但是,它无法找到变量编辑.如果我显式地声明了一个内部类并实现了,例如,MouseAdapter接口或其他什么,它可以从中检测变量编辑.所以我的问题是新的MouseAdpater()的范围是什么?此外,有没有人知道这方面的好读物?非常感谢你.顺便说一句,我得到的错误是从内部类访问局部变量,需要声明它是最终的

解决方法:

1)如果存在,edit.getItem(0)返回第一个JMenuItem,否则返回IllegalArgumentException

2)this.edit.getItem(0),而不是返回成员的类

3)edit.getItem(0).addMouseListener(新的MouseAdapter(){是反作用的,因为JMenu,JMenuItem正确实现了MouseEvents,为了更好的解决方法,你必须看看ButtonModel

4)没有理由适用鼠标适配器的范围

5)从JMenu(不是JMenuItem)监听事件,看看MenuListener

标签:jmenu,java,swing,mouse-listeners
来源: https://codeday.me/bug/20190729/1573854.html