日期:2014-05-20  浏览次数:20715 次

Java Swing表格中点击右键时保留左键选中的表格
使用Java Swing开发的GUI表格,点击拖动左键选择了多个表格后,再点击右键,此时想保留左键的选中的表格,如何实现?各位大神帮忙。
现在右键菜单什么的都实现了,但每次一点击右键,之前左键选中的多个表格就都没了,变成只选中点右键时所在的那一个表格了。怎么处理?
Java Swing GUI

------解决方案--------------------
引用:
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 恢复正常

具体我没试过,但这大概是一种思路,楼主可以试试。


最上面的链接是刚刚去查的,可以看到原本的 selection 被清空大概是因为 UI 类里的 MouseListener 没有对右键做任何特别的处理。

楼主或者也可以试试,当判断是鼠标右键事件的时候调用 MouseEvent 的 consume 方法看行不行。