当前位置:  技术问答>java相关

wolfsquare等高手进来看看吧,的确很奇怪!传递的参数在actionPerformed方法中发生的错误!

    来源: 互联网  发布时间:2015-01-12

    本文导语:  具体问题如下: RightsTable jRightsPanel; //RightsTable是我定义的一个类 当我按下一个按钮后,会执行 jRightsPanel = new RightsTable(in[0],nFlag);//其中in[0]中的值在每次按下按钮后都会发生变化 在RightsTable中我定义了一个模块级变...

具体问题如下:
RightsTable jRightsPanel; //RightsTable是我定义的一个类
当我按下一个按钮后,会执行
jRightsPanel = new RightsTable(in[0],nFlag);//其中in[0]中的值在每次按下按钮后都会发生变化

在RightsTable中我定义了一个模块级变量m_sGURID,并在构造函数中对其赋值:
  public RightsTable(String sID,int nType) {
    try  {
      m_sGURID = sID;
      m_nType = nType;
      System.out.println("m_sGURID in Constructor:" + m_sGURID);
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }

在RightsTable中也有一个按钮,当我按下它时,想显示出m_sGURID的值:
actionPerformed方法:
if (e.getSource()==jBtnModifyRole)
   System.out.println("m_sGURID in event:" + m_sGURID);

运行结果确实这样的:
第一次运行时假设in[0]的值111,最后的现实也是111----正确;
第二次运行时假设in[0]的值222,在构造函数中显示的值为222,但在actionPerformed方法中,显示的值却仍然是111;
第三次....每次的运行结果都和第二次一样.

为什么呢?有什么简单的解决办法?



|
我想这是因为你在构造新的RightsTable时,没有替换掉原先的RightTable,也就是重新加入面板一次,因为你虽然更新了变量 jRightsPanel ,实际上面板上的还是没有更新的.
所以按下按钮才会一直出现"111"

|
先用Container 的remove(Component comp) 方法将上一个RightsPanel 删除掉后,再 add 新的RightsPanel。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请wolfsquare(狼平方)进来领分


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3