我要建了一个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)