jmenuitem问题,急啊~

SpringPhoenix 2009-06-06 05:21:17
JMenuItem jmiPro =new JMenuItem("set") ;
ActionListener a1 = new ActionListener(){
public void actionPerformed(ActionEvent e)
{
//调用别的类里的一个方法
}
};
jmiPro.addActionListener(a1);
我想选中下拉菜单的set,然后调用别的类里的一个方法触发事件`不知道这样写有没有错

最主要的问题是我这样做系统都会提示"不能引用另一方法中定义的内部类中非终态变量",不知道该怎么解决
求高手解答,急啊~
...全文
87 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
三仙半 2009-06-08
  • 打赏
  • 举报
回复
线程死了就没有办法回来啦,重新生成一个吧
j1223jesus 2009-06-07
  • 打赏
  • 举报
回复
在当前类上写一个方法a()

public void a()
{
调用别的类里的一个方法;
}

JMenuItem jmiPro =new JMenuItem("set") ;
ActionListener a1 = new ActionListener(){
public void actionPerformed(ActionEvent e)
{
a();
}
};

这样就不用final了,不过有点投机取巧罢了
SpringPhoenix 2009-06-07
  • 打赏
  • 举报
回复
都没啥人回的呀...
顺便问下,线程死后怎么怎么重新启用?~
lasfrost 2009-06-06
  • 打赏
  • 举报
回复
能贴部分代码看看吗
SpringPhoenix 2009-06-06
  • 打赏
  • 举报
回复
需要调用的方法还要调用很多其他方法,还有一些线程,所以用了final后感觉全乱了~
lasfrost 2009-06-06
  • 打赏
  • 举报
回复
你这个是编译时错误吗?
内部匿名类调用局部变量需要声明为final,当然你也可以把变量改为全局变量写在类里。
你预期是什么效果
SpringPhoenix 2009-06-06
  • 打赏
  • 举报
回复
除了这个声明fina还有其他法子么?~这样做达不到我预期的效果`~
lasfrost 2009-06-06
  • 打赏
  • 举报
回复
你这样写倒是没错,但还有更好的方法:
直接在菜单对象上添加Action:
popupMenu.add(new AbstractAction("set") {
public void actionPerformed(ActionEvent e) {
//...
}
});
对于你的问题,试着把非终态变量声明为final试试。

62,614

社区成员

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

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