JCompononet对象传递给操作侦听器不会使用新更改自行更新

时间:2014-10-26 15:22:24

标签: java swing jpanel actionlistener pass-by-reference

Calling Method    
public void callingMethd(){
         jbutoon.addActionListener( new ListenToSave(p));//execute on some event
          //want to use updated p here.but the thing is after we add call listen to save,compononet //added in ListenToSave class wont reflect back here.I guess some problem with reference 

}
public class ListenToSave implements ActionListener {
    JPanel gameMatrixPanel=null;
    public ListenToSave(JPanel p){
    gameMatrixPanel=p;
    }
    public void actionPerformed(ActionEvent e) {
           gameMatrixPanel.add(//some compononent);
    }

    }

发生的问题是我想在ListenToSave()获取更新后使用更新的面板p调用方法。但是调用方法没有发生面板的更新。该怎么做

1 个答案:

答案 0 :(得分:1)

new ListenToSave(p);

这只是调用ListenToSave的构造函数。所有构造函数都是

gameMatrixPanel=p;

因此,它不会修改面板中的任何内容。

修改面板的内容是

public void actionPerformed(ActionEvent e) {
    gameMatrixPanel.add(//some compononent);
}

此方法仅被称为

  • 如果将ListenToSave侦听器添加为按钮或其他组件的ActionListener
  • 单击或修改此按钮或其他组件,以便组件触发ActionEvent。

因此,您的代码并没有多大意义,但我真的不知道您的实际意图是什么,因此很难提供解决方案。

目前,我建议您阅读swing tutorial on events and listeners,因为您似乎还没有抓住这个概念。