说明:第三四五问题均为SWT的问题,不是SWING的问题问题一: 向vector中插入10个元素,总是出现错误,请教各位帮忙给看看出了什么问题程序如下:import java.util.Iterator;
import java.util.Vector;
import org.eclipse.jface.action.Action;class AddAction extends Action
{  
     Vector vector = new Vector();
     Entity o = new Entity();
     Iterator it = null;
         
     public void run()
     {
         for(int id=1;id<=10;id++)
         {    
     o.setId(id);
     o.setName("");
     o.setAge(0);
     o.setSex(true);
     o.setCreateDate("1900-01-01");
    
     vector.addElement(o);
     //第一次打印: 打印ID的值,结果ID的值是正确的
     System.out.println(new Long(new Integer(id).toString()));    
         }
              
         it = vector.iterator();
       while(it.hasNext())
       {
           Entity pe = (Entity)it.next();
           //第二次打印: 打印vector的元素,结果是错误的
   System.out.println(pe.getId() + ":" + pe.getName() + ":" + 
pe.isSex() + ":" +pe.getAge() + ":" + pe.getCreateDate());
        }
     }
    
     public static void main(String[] args)
        {
         AddAction add = new AddAction();
         add.run();
        }
}
    
class Entity
{
         private int id;
         private String name;
         private boolean sex;
         private int age;
         private String createDate; 
         public int getAge()
         {
             return age;
         }
         public void setAge(int age)
         {
             this.age = age;
         }
         public String getCreateDate()
         {
             return createDate;
         }
         public void setCreateDate(String createDate)
         {
             this.createDate = createDate;
         }
         public int getId()
         {
             return id;
         }
         public void setId(int id)
         {
             this.id = id;
         }
         public String getName()
         {
             return name;
         }
         public void setName(String name)
         {
             this.name = name;
         }
         public boolean isSex()
         {
             return sex;
         }
         public void setSex(boolean sex)
         {
             this.sex = sex;
         }
}运行结果如下:
第一次打印ID的值:
1
2
3
4
5
6
7
8
9
10
第二次打印vector中的元素:
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
10::true:0:1900-01-01
为什么vector中所有的ID的值都成了10呢?问题找到了,只要把Entity o = new Entity();
这一句写在循环里,也就是创建10个对象就好了,但想不明白什么原因,大家帮帮我!问题二:保证用户输入的是合法的日期(只能输入yyyy-MM-dd格式)(newValue是用户输入的数据)try
{
              
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");                            
   sdf.parse(newValue);             
}
catch(Exception ex)
{
   MessageDialog.openError(null,"提示","日期输入格式为:YYYY-MM-DD!");}如果用户不按这个格式输入,可以正确的弹出对话框进行提醒,但如果用户按这个格式输入一个错误的数据,
比如2008-45-63,则只在控制台上打印抛出的异常信息,却不弹出对话框进行提醒,如何才能在输入上述
数据时也能弹出对话框进行提醒?问题三:表格较小,而数据较多,在表格上插入一行,怎么控制滚动条自动滚动,让这一行在表格上显示出来,不必让
用户再手工拖动滚动条去找插入的行。问题四:有两个表格,其中一张表格的数据是另一张表格的ComboboxCellEditor,如何做到修改第一张表格后,另一张
表格的ComboboxCellEditor的内容可以自动更新(两种表格在同一个界面上)问题五:多台机子同时在一种表格里录入数据,怎么让每台机子的内容能实时刷新,而不是每台机子只能看到自己录入的数据。多谢大家的指点和帮助,谢谢!!!

解决方案 »

  1.   

    第一问:
         LZ估计没有系统学过JAVA,对象只是索引,你给一个对象A不同的值,再传给其他对象B和C,B和C去取值的时候是直接去取A这个索引指向的值,而不是说,你创建了一个对象,赋10次值,电脑就会把10个值都存到内存里不知道LZ听明白没有。第二问:
         可以用正则判断,这个随便一搜索就一堆。第三问:
         滚动条有setSelection(int selection)这种方法,其中参数selection是当前的位置,table.getVerticalBar().setSelection(presentLine);就可以了,但是presentLine要计算一下,就是当前行数line乘以单元高度就可以了。第四问:
         这个做联动就可以了,简单的方法就是给表格A加监听器,如果要做到异步更新,那就给每个会改变的控件加监听器,然后为表格B的单元格设定值。第五问:
         这要做C/S了,服务器存当前的表格内容,当表格内容改变时,向CLIENT端发送更新数据,CLIENT端接受数据后更新本机的数据,并显示,这就涉及到MVC结构了,LZ可以去搜一搜我提到的相关信息,相信系统的了解下会很有帮助的。
      

  2.   

    上面第二问好象所答非所问了,LZ去查查FINALIZE的用法就好了