解决方案 »

  1.   

    法一、重写表格渲染方法,可以在表格每行左边添加一个checkbox,这样选中后checkbox也是选中的,你右键点击就不会取消选中了。
    法二、我给你提供个思路,当左键选中表格行时,用一个数组或者什么的保存当前选中行的索引,然后在右键菜单事件里根据保存的索引再重新依次选中行(grid.setSelectedIndex(index),有这么个按索引选中行的方法我记不清了)。
      

  2.   

    ftp://ftp.yellowdoglinux.com/.2/nslu2/sources/svn/gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch/libjava/classpath/javax/swing/plaf/basic/BasicTableUI.java不知道楼主是怎么实现右键菜单的,是自己添加了 MouseListener ?可以给 JTable 原本的两个 ListSelectionModel (一个 row, 一个 col)套一层静态代理的壳,壳内设置一个 flag,以便需要时可以无视对 selection model 做的任何写操作。这样,你在自己那个唤出右键菜单的listener里就可以这样:1 设置两个 selection model 无视任何写调用
    2 右键菜单
    3 (最好放在 finally 中)invokeLater 设置两个 selection model 恢复正常具体我没试过,但这大概是一种思路,楼主可以试试。
      

  3.   


    最上面的链接是刚刚去查的,可以看到原本的 selection 被清空大概是因为 UI 类里的 MouseListener 没有对右键做任何特别的处理。楼主或者也可以试试,当判断是鼠标右键事件的时候调用 MouseEvent 的 consume 方法看行不行。
      

  4.   


    最上面的链接是刚刚去查的,可以看到原本的 selection 被清空大概是因为 UI 类里的 MouseListener 没有对右键做任何特别的处理。楼主或者也可以试试,当判断是鼠标右键事件的时候调用 MouseEvent 的 consume 方法看行不行。
    我确实用的是MouseListener,多谢提醒,我去试一下。