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

请问jtree的每个节点上加上鼠标单击事件,怎么加啊,用addActionListener好像不行啊?
我要建了一个jtree     ,有多个分节点,怎么给每个不同的节点上添加鼠标单击事件啊??   谢谢!!1

------解决方案--------------------
要用到TreeSelectionListener这个接口
以下是我的例子
/**
*
*/
package com.softfz.zxj;

import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;

class MyTreeSelectionListener implements TreeSelectionListener{

private Object selectionObj;
private ArrayList uList;
//private ArrayList uIdList = new ArrayList();
//private JTree tree = new JTree();
private DefaultMutableTreeNode selectionNode;
public MyTreeSelectionListener(ArrayList uList){
this.uList = uList;
}
//关键是这个方法
public void valueChanged(TreeSelectionEvent e) {
// TODO 自动生成方法存根

JTree tree = (JTree)e.getSource();
selectionNode =
(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();//得到选中的节点
selectionObj = selectionNode.getUserObject();//得到该节点所存放的对象
if(selectionObj instanceof Deptinfo)
{
if(selectionNode.getChildCount()!=0)
{
String dId =((Deptinfo)selectionObj).getDeptId();
String dName = ((Deptinfo)selectionObj).getDeptName();
Client.getClient().chatUIDLabel.setText(dId);
Client.getClient().chatUnameLabel.setText(dName);
Client.getClient().portraitLabel = new JLabel(new ImageIcon( "image\\Login.gif "));
}
else
{
JOptionPane.showMessageDialog(null, "该部门无人,不能聊天! ", "出错 ",
JOptionPane.ERROR_MESSAGE);
tree.setSelectionRow(0);
}

}else if(selectionObj instanceof Userinfo)
{
Userinfo uInfo = (Userinfo)selectionObj;
String uId =uInfo.getUserId();
if(!Client.getClient().myUID.equals(uId))
{
if(uInfo.getOnline().equals( "1 "))
{
String uName = ((Userinfo)selectionObj).getUserName();
String uIcon = ((Userinfo)selectionObj).getIconNum();
Client.getClient().chatUIDLabel.setText(uId);
Client.getClient().chatUnameLabel.setText(uName);
Client.getClient().portraitLabel.setIcon(new ImageIcon( "image\\userhead\\big "+uIcon+ ".png "));
}
else
{

JOptionPane.showMessageDialog(null, "不能对没上线的人聊天! ", "出错 ",
JOptionPane.ERROR_MESSAGE);
tree.setSelectionRow(0);
}
}
else
{

JOptionPane.showMessageDialog(null, "不能对本人聊天! ", "出错 ",
JOptionPane.ERROR_MESSAGE);
tree.setSelectionRow(0);
}
}
else
{

Client.getClient().chatUIDLabel.setText( " ");
Client.getClient().chatUnameLabel.setText( "公司 ");
Client.getClient().portraitLabel.setIcon(new ImageIcon( "image\\Login.gif "));

// return uIdList;
}
}
}

------解决方案--------------------
不懂,学习学习,你可以查一下api看看Jtree支持什么事件
好像自身有这些
addTreeExpansionListener(TreeExpansionListener tel)
为 TreeExpansion 事件添加侦听器。
void addTreeSelectionListener(TreeSelectionListener tsl)
为 TreeSelection 事件添加侦听器。
void addTreeWillExpandListener(TreeWillExpandListener tel)