我设了两个表格jtable1和jtable2,数据都是vector类,比如分别为vector data1和data2.然后data2.addall(data1),所以两个表格内容一样,jtable1不能编辑单元内容,但jtable2可以编辑,不知道为什么编辑jtable2的cell内容,jtable1也改变了,而且是在点击jtable1的窗口时改变。但removerow jtable2中的行时,却有不同步到jtable1中。请高人帮忙解决啊》非常感谢!

解决方案 »

  1.   

    你的data1和data2里面放的都是vector吧。
    那么,试想,data1.get(0)与data2.get(0)它们是否得到的是同一个对象呢?
    应该是同一个vector因为不是简单类型,所以不是传递副本。因此,你改变了某一个另一个也就同时改变。
    至于你说的第二个问题。
    data1和data2是两个不同的对象,尽管他们放了一些相同的对象进去。每一个都可独立的增删。
    请体会如下代码,以及输出结果public static void main(String[] args) {
    Vector<Vector<String>> v1 = new Vector<Vector<String>>();
    Vector<Vector<String>> v2 = new Vector<Vector<String>>(); for (int i = 0; i < 10; i++) {
    Vector<String> v = new Vector<String>();
    for (int j = 0; j < 20; j++) {
    v.add(i + " " + j); }
    v1.add(v);
    } v2.addAll(v1); System.out.println(v1.size());
    System.out.println(v2.size()); Vector<String> remove = v1.remove(v1.size() - 1);
    System.out.println(v1.size());
    System.out.println(v2.size()); System.out.println(remove == v2.get(v2.size() - 1));
    }
      

  2.   

    高手啊,听了您的话我好像懂了些。不好意思,下载才回您的,我是这样理解的,其实两个的vector指向的对象相同,指的是一个对象,所以操作一个另一个改变,开始我最想不通的就是这样的话为什么删除不行,我现在好像懂了些,因为对于第二个vector来说,删除只是从该列表中移除了该项,但并没有对那个数据做任何操作,所以remove操作对数据没影响,所以第一个vector也不会变化。真是太感谢您了,我都想了一天了,头都大了,谢谢您了,醍醐灌顶啊,呵呵