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