当前位置: 技术问答>java相关
高分请教一个小问题。请进!
来源: 互联网 发布时间:2015-02-20
本文导语: 程序太长,我只取出了其中关键部分,程序编译和执行均没有报错,但不是我所期望的结果,请高手指点。 我建立了一个矢量列表框,先初始化一个“Mercury”,然后在执行DataOpen方法时,我希望将所有结果addElement于D...
程序太长,我只取出了其中关键部分,程序编译和执行均没有报错,但不是我所期望的结果,请高手指点。
我建立了一个矢量列表框,先初始化一个“Mercury”,然后在执行DataOpen方法时,我希望将所有结果addElement于DataBaseVector对象中。程序可以正常显示出DataOpen方法的结果,但却没有在矢量中添加相应的元素,为什么?
class ClientFrame extends JFrame implements ActionListener
{ public ClientFrame()
{
DataBaseVector= new Vector();
DataBaseVector.addElement(new Planet("Mercury"));
DataBaseList =new JList(DataBaseVector);
}
public void DataOpen(String Sname,String sa,String Pword)
{
try
{
DataBaseVector.addElement(new Planet("abc"));
while (rs.next())
{
//下面这句话可能正常运行
textArea.append(rs.getString(1)+" ");
//但这句话运行时没有报错,但也没显示出执行效果
DataBaseVector.addElement(new Planet("Mercury"));
}
}
catch(Exception ex)
{
}
}
private Vector DataBaseVector;
}
我建立了一个矢量列表框,先初始化一个“Mercury”,然后在执行DataOpen方法时,我希望将所有结果addElement于DataBaseVector对象中。程序可以正常显示出DataOpen方法的结果,但却没有在矢量中添加相应的元素,为什么?
class ClientFrame extends JFrame implements ActionListener
{ public ClientFrame()
{
DataBaseVector= new Vector();
DataBaseVector.addElement(new Planet("Mercury"));
DataBaseList =new JList(DataBaseVector);
}
public void DataOpen(String Sname,String sa,String Pword)
{
try
{
DataBaseVector.addElement(new Planet("abc"));
while (rs.next())
{
//下面这句话可能正常运行
textArea.append(rs.getString(1)+" ");
//但这句话运行时没有报错,但也没显示出执行效果
DataBaseVector.addElement(new Planet("Mercury"));
}
}
catch(Exception ex)
{
}
}
private Vector DataBaseVector;
}
|
这主要是组件没有自动更新功能,你不能根据一个Vector来构造一个JList,然后就向Vector添加元素来让JList自动更新,而应该用ListModel来构造JList,或者直接向JList添加成员,用JList.add()方法,不能自动更新的话,还要调用JList.validate()方法。
看看书吧,sun有一套介绍swing的教材,还不错,可以打基础,java turtail也可以。
看看书吧,sun有一套介绍swing的教材,还不错,可以打基础,java turtail也可以。
|
:)
我同意cherami(cherami)的观点,这的确是组件同步更新的问题……
在你的程序中,VECTOR的值是肯定改变了的,你可以打印出来看;
不过当VECTOR更新后,JLIST并不会同步更新,这就是问题所在;
就你的程序而言,也不用象cherami(cherami)说的那么麻烦,VECTOR的值更新后,执行这句即可:“DataBaseList.setListData(DataBaseVector);”……
我同意cherami(cherami)的观点,这的确是组件同步更新的问题……
在你的程序中,VECTOR的值是肯定改变了的,你可以打印出来看;
不过当VECTOR更新后,JLIST并不会同步更新,这就是问题所在;
就你的程序而言,也不用象cherami(cherami)说的那么麻烦,VECTOR的值更新后,执行这句即可:“DataBaseList.setListData(DataBaseVector);”……