当前位置: 技术问答>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 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"
所以按下按钮才会一直出现"111"
|
先用Container 的remove(Component comp) 方法将上一个RightsPanel 删除掉后,再 add 新的RightsPanel。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。