如何在内部类中调用外面的变量,下面的错误清高手解释一下?

myjava_024 2006-10-23 09:59:35
//建立帮助目录下的子菜单
MenuItem about = new MenuItem("关于画图(A)");


//把子菜单加入到帮助菜单下
help.add(about);
help.addActionListener
(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
Dialog d = new Dialog(about,"关于画图");
Button but = new Button("确定");
d.add(but);
but.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
d.dispose();
}
}
);
}
}
);
这段代码总报错 跪求解答.....
...全文
225 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
混沌骑士 2006-10-24
  • 打赏
  • 举报
回复
写一个实现ActionListener接口的类,把Dialog d作为参数传进去,然后就可以操作d.dispose()
flyIce945 2006-10-24
  • 打赏
  • 举报
回复
^^
bayougeng 2006-10-24
  • 打赏
  • 举报
回复
e.getSource()方法可以告诉你是谁触发了这个事件。你也可以直接用这个方法得到消息源,然后对组件进行操作。
strong35535 2006-10-23
  • 打赏
  • 举报
回复
没试你的代码,不过感觉你把2个事件套写总是不好的,分开试试
killme2008 2006-10-23
  • 打赏
  • 举报
回复
final Dialog d = new Dialog(about,"关于画图");

为局部参数拷贝到局部内部类的成员变量过程是编译器隐式完成的,程序员是看不见的(如果用反射机制是可以看到编译器给局部内部类创建了被引用参数相应的类的成员变量);如果不为final变量,那么这个变量可能在函数中可能被改变,那么拷贝到局部内部类中相应的成员变量中的值将不是调用函数最初的参数值;为了这种不一致的情况产生,编译器强制要求局部内部类中用到的参数必须为final型的;

bigelf 2006-10-23
  • 打赏
  • 举报
回复
外部类名.d.dispose();

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧