java中 进行事件处理的问题?

我给一个JButton对象添加了一个事件监听器,没有使用匿名内部类,如何在事件回调处理函数里面引用其他组件对象,因为事件处理函数是位于单独的一个类,它的作用域里面无法看到... 我给一个JButton对象添加了一个事件监听器,没有使用匿名内部类,如何在事件回调处理函数里面引用其他组件对象,因为事件处理函数是位于单独的一个类,它的作用域里面无法看到其他的组件对象,我要在事件处理函数里面处理其他的组件对象该怎么办呀,不使用匿名内部类。
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler());
}
然后定义了loinhandler类
public class loginhandler implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里要改变其他组件的内容,但是作用域够不到其他组件,该怎么办那*/
}

}
展开
 我来答
隔壁老王叨叨叨
2011-07-17 · TA获得超过7699个赞
知道大有可为答主
回答量:2710
采纳率:0%
帮助的人:2517万
展开全部
你需要传递一个JButton对象过来。
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler(login));
}
public class loginhandler implements ActionListener
{
JButton b;
public loginhandler(JButton b)
{
this.b = b;
}
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里改变组件b的内容,前提是那些方法是public的*/
}

}

如果你想改变的不是JButton的内容,而是class a的内容,那么可以写成这样:
public class a{
JButton login=new JButton();
login.addActionListener((ActionListener) new loginhandler(this));
}
public class loginhandler implements ActionListener
{
a b;
public loginhandler(a b)
{
this.b = b;
}
@Override
public void actionPerformed(ActionEvent e)
{
/*在这里改变class a的内容,前提是那些方法是public的*/
}

}
百度网友845f74e61
2011-07-17 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1632万
展开全部
loginhandler
创建构造方法,把a的实例传过来命使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
disuda
2011-07-17 · 超过34用户采纳过TA的回答
知道答主
回答量:176
采纳率:0%
帮助的人:102万
展开全部
创建构造方法,把a的实例传过来命使用
楼上正解!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友583be65
2011-07-17 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:114万
展开全部
把你要操作的对象用参数传进去不就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
左潇龙
2011-07-17 · TA获得超过470个赞
知道小有建树答主
回答量:344
采纳率:0%
帮助的人:279万
展开全部
不知道你想操作的是什么组件对象。大部分的组件对象可以设置为静态的,就能直接用类名加属性名调用了。这样作用域的问题就解决了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式