请问在swing中,怎样把参数传递到事件处理中?

yanjingrong 2012-10-23 09:45:04
请问在swing中,怎样把参数传递到事件处理中?

例如:

JButton b_save=new JButton("保存");

String var="hello"; //怎样把这个var变量传递到 save 事件程序里面?

b_save.addActionListener(save);

static ActionListener save = new ActionListener(){
public void actionPerformed(ActionEvent ae) {

try {


System.out.println(var); // 怎样将var变量传入到这里???


} catch (Exception e) {
e.printStackTrace();
}


}
};

...全文
184 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gloomyfish 2012-10-23
  • 打赏
  • 举报
回复
把你的数据组装到事件对象中即可。然后从事情event中获取,你甚至可以自定义一个你自己的事件。
这个跟swing没关系,windows的消息机制一直这么玩......
你也可以......
yanjingrong 2012-10-23
  • 打赏
  • 举报
回复
因为保存按钮要,把最新的字符串变量update到数据库,所以才有的这个需求
raistlic 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

final String var="hello";
[/Quote]

我的第一反应也是这么说的,然后我就看到了 ActionListener 前面那个 "static"

这是个设计的问题,楼主给的都是代码片段,所以不好说

另外还有“为什么”有这个需求的问题

还有那个要传进去的变量可能会在哪个线程更改的问题
nj_dobetter 2012-10-23
  • 打赏
  • 举报
回复
final String var="hello";
yanjingrong 2012-10-23
  • 打赏
  • 举报
回复
谁能帮帮小弟...........
yanjingrong 2012-10-23
  • 打赏
  • 举报
回复
求助了..............
张某码 2012-10-23
  • 打赏
  • 举报
回复
9楼这样就可以了
wzfnju 2012-10-23
  • 打赏
  • 举报
回复
不用匿名类就可以了
class Listener implements ActionListener{
String var;
public Listener(String v){
var=v;
}
public void actionPerformed(ActionEvent e){

}
}
桃园闲人 2012-10-23
  • 打赏
  • 举报
回复
不用传值呀,只要在你的属性或变量在事件处理方法的课件范文,就可以使用该变量。如果要获取事件源可以使用
ae.getSource()方法。
Giberson1 2012-10-23
  • 打赏
  • 举报
回复
不用传值的,我给你解释下Swing的机制吧

Swing是事件机制,类似于我们操作系统的中断机制。

就是,它捕获事件的时候,就会去追踪事件源(事件源包含了你要传的值信息),

这时候,事件处理程序就可以和主体通讯的,

不过你的主体变量必须是final类型。

62,616

社区成员

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

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