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()方法也无法获取正确的行。