请问在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();
}
}
};

解决方案 »

  1.   


    我的第一反应也是这么说的,然后我就看到了 ActionListener 前面那个 "static"这是个设计的问题,楼主给的都是代码片段,所以不好说另外还有“为什么”有这个需求的问题还有那个要传进去的变量可能会在哪个线程更改的问题
      

  2.   

    因为保存按钮要,把最新的字符串变量update到数据库,所以才有的这个需求
      

  3.   

    把你的数据组装到事件对象中即可。然后从事情event中获取,你甚至可以自定义一个你自己的事件。
    这个跟swing没关系,windows的消息机制一直这么玩......
    你也可以......
      

  4.   

    不用传值的,我给你解释下Swing的机制吧Swing是事件机制,类似于我们操作系统的中断机制。就是,它捕获事件的时候,就会去追踪事件源(事件源包含了你要传的值信息),这时候,事件处理程序就可以和主体通讯的,不过你的主体变量必须是final类型。
      

  5.   

    不用传值呀,只要在你的属性或变量在事件处理方法的课件范文,就可以使用该变量。如果要获取事件源可以使用
    ae.getSource()方法。
      

  6.   

    不用匿名类就可以了
    class Listener implements ActionListener{
     String var;
     public Listener(String v){
      var=v;
     }
     public void actionPerformed(ActionEvent e){
           
     }
    }