一般而言,要让树的节点响应点击事件,我们通常都是实现TreeSelectionListener接口。
定义:this.jtree.addTreeSelectionListener(this);
代码:
@Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) this.jtree.getLastSelectedPathComponent();
Myuser user = (Myuser) node.getUserObject();
ChatFrame chatFrame = new ChatFrame(user);
chatFrame.setVisible(true);
}
但是,TreeSelectionListener只能保证节点响应一次。重复点击时,不会触发valueChanged事件。
所以,我们应该实现MouseListener接口。
定义:this.jtree.addMouseListener(this);
代码:
@Override
public void mouseClicked(MouseEvent e) {
//点击事件
if(e.getSource()==this.jtree){
TreePath selPath = this.jtree.getPathForLocation(e.getX(),e.getY());
DefaultMutableTreeNode node = (DefaultMutableTreeNode) selPath.getLastPathComponent();
Myuser user = (Myuser) node.getUserObject();
ChatFrame chatFrame = new ChatFrame(user);
chatFrame.setVisible(true);
}
}
这样,树的节点才能够响应重复点击事件!