先记录选在哪儿, int Selected = table.getSelectedRow();然后刷新, …………再设置选中老地方  table.setRowSelectionInterval(Selected, Selected);
                  //可以选一片

解决方案 »

  1.   

    还是这样比较好记录: int[] Selected = table.getSelectedRows();重选: table.setRowSelectionInterval(Selected[0], Selected[Selected.length]);
      

  2.   

    onefox(一品狐)说的比较好的方法恰恰是错误的
      

  3.   

    原理基本上是错的
    记录: int[] selectedIndex = table.getSelectedRows();重选: 
    for(int i = 0 ; i < selectedIndex.length ; i++)
    {
        table.addRowSelectionInterval(selectedIndex[i], selectedIndex[i]);
    }
    ok?
      

  4.   

    对了,重选前还要clearSelection,如果有的话。
      

  5.   

    这次我做过测试了, Selected[Selected.length - 1] ,要 -1 ,忘记了其它正常。请注意,是 setRowSelectionInterval() ,不是 add 。请你搞清楚情况再发话而且也没必要用傻瓜的 for 循环选, 本来就可以选一片的
      

  6.   

    两位的方法我都试了,好象都通得过,都可以到达那种效果,就是jTable刷新后,焦点仍然停留在原来选中的记录上;  但是我想问一下的就是:
      为什么重选是这样的,原理到底是什么样的?
    重选: 
    for(int i = 0 ; i < selectedIndex.length ; i++)
    {
        table.addRowSelectionInterval(selectedIndex[i], selectedIndex[i]);
    }
      为什么我用onefox(一品狐) 的方法:table.setRowSelectionInterval(Selected[Selected.length-1], Selected[Selected.length-1])
    也达到了预期的效果?
      

  7.   

    setRowSelectionInterval(int, int) 设置选择区域 2个 int 参数代表区域行的开始 和 结束所以用 (Selected.length-1], Selected[Selected.length-1]) 直接选择一片===============================================
    他用addRowSelectionInterval(int, int) 增加选择区域参数意义也是 选择行的开始 和 结束, 但它是 增加所以他上面说到了 “刷新”clearSelection 。这里你是再 刷新 table 后再 重选,所以 它的方法跟我的看起来效果一样还有, 它用 for() 循环选择一片行区域这是很蠢的方法, 参数里明明可以直接设置区域的 开始 结束 行号他却一个个自己增加。所以,他的方法不好。 不管从逻辑上还是 算法时间上都不够完善而且拿出去会被人笑话。
      

  8.   

    onefox(一品狐)大哥,你不怕丢人我还怕丢人呢,不跟你说了,让别人看见笑话我跟你一般见识。建议好好看看Table的SelectionModel再出来混,不要误人子弟。以为Table只有一种选取模式吗?
      

  9.   

    liuyan7903 (佳 佳) 我们说的是多行或多列选取,你只选一行,所以看不出来区别的。
      

  10.   

    relive(六道轮回,无想转生) :
        真不好意思,我这个帖子已经结贴了,本来想要加点分给你,现在也没有办法,不过我会记得兄弟的帮助的,谢谢,谢谢!
      

  11.   

    分当然不是主要,否则我也懒得费口舌请再仔细看看你的代码 OK ? 我已经没什么好说的了, 谁只选单行了???代码放在这儿你不会自己测试看看?真的很难理解, 这本来是显而易见没什么好争的东西而且根本没有深入到 SelectionModel如果你题意找个公证人我没什么意见,虚心应该是搞技术的基本心态,我对自己的代码做过测试,而且也研究过你的代码。就那个 for() 可以看出你对那个方法理解错误而且我用的是 set  你是 add 这在逻辑是你也错了可能只是为了适应 for() 循环才用 add 吧
      

  12.   

    你把selectionmode设成MULTIPLE_INTERVAL_SELECTION然后按着ctrl键选几个不连续的,看看你的会出什么现象“怕的是自己丢人了还不知道”  完全同意
      

  13.   

    我自己做了个示例,发现问题所在了:
    http://my.nbip.net/homepage/zhouB403/MyCode/SelectionDemo.exe这是送给您的,感想您的教导!
    http://expert.csdn.net/Expert/topic/2134/2134456.xml?temp=.1322138