首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

TreeTable方案中,点中第一列tree节点后,无法通过直接点击其他行和列来切换所选行的有关问题

2012-11-09 
TreeTable方案中,点中第一列tree节点后,无法通过直接点击其他行和列来切换所选行的问题? 在网上找到的sun

TreeTable方案中,点中第一列tree节点后,无法通过直接点击其他行和列来切换所选行的问题

? 在网上找到的sun官方提供的Swing treetable解决方案中,存在一个问题,当选中第一列的tree的某个节点后,必须通过点击该tree上的其他节点才能进行行的切换,如果直接点击其他列和行,则无效,大致是因为将JTree设置为JTable某一列的渲染器后,JTree和JTable同时在发生作用,因而引起的问题(这只是个人的理解,不确定,如说错了,欢迎指正),解决方案如下:

?? 在JTreeTable类中(JTreeTable.java文件)添加MouseListener:

? 通过鼠标时间的getPoint,结合JTable的rowAtPoint方法找出鼠标点击的正确行数所在,然后通过setRowSelectionInterval(index0,index1)方法将该行设置为选中状态即可

class TreeTableMouseAdapter extends MouseAdapter{??? ??public void mouseClicked(MouseEvent e) {???????????? super.mouseClicked(e);????? ??      int eEow = jTable.rowAtPoint(e.getPoint());???? ??      jTable.setRowSelectionInterval(eEow, eEow);??? ??}}

?在先选中JTree的某一节点后,不能直接用JTree的getRowForLocation(e.getX(),e.getY())方法获取所在行,那样除非正好选中JTree中的某一节点,否则点击到表格中其他位置都只能获取到行数为“-1”;使用JTable的getSelectedRow()方法也无法获取正确的行。

热点排行