我正在用 Java 里的 JTree 做一个类似于QQ好友列表的东西,我想给树的节点添加鼠标双击事件,当我双击节点时,就会弹出相应的聊天对话框,但是树的节点没有addMouseListener这个方法。只有TreeSelectionListener这个方法,但这个方法没法实现双击监听。这个问题该怎么解决?想了很久都没有头绪,还请大家赐教,谢了!
(ps:我只想用树来构建这个好友列表,不想用像按钮之类的东西)
(ps:我只想用树来构建这个好友列表,不想用像按钮之类的东西)
http://java.sun.com/javase/6/docs/api/javax/swing/JTree.html#JTree%28javax.swing.tree.TreeNode%29 final JTree tree = ...; MouseListener ml = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if(selRow != -1) {
if(e.getClickCount() == 1) {
mySingleClick(selRow, selPath);
}
else if(e.getClickCount() == 2) {
myDoubleClick(selRow, selPath);
}
}
}
};
tree.addMouseListener(ml);
在匿名类中添加变量
long final doubleClickInterval = 300l;
long lastTime = 0l;
当单击事件触发时long clickTime = System.currentTimeMillines();
if(clickTime-lastTime < doubleClickInterval){
doubleClick();
lastTime = clickTime;
return;
}
添加这段代码在单击事件方法内就可以实现双击事件监听了。
之前就是用这个办法实现过JTable面板的双击监听。
答案的却如此!
我还发现了用getLastSelectionComponent()去判断一下是否isLeaf()会只对叶子节点有效.