JavaSwing Jtree 自定义node(选中节点获取自定义节点信息)
如果选中一个节点直接通过node的text去获取很多时候是不行的,最简单的办法是继承DefaultMutableTreeNode类,重写toString和构造方法。
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
public class TreeActionMap extends JFrame{
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
JFrame j = new JFrame("Test");
j.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
j.setSize(500, 300);
j.setLocation(500, 300);
NodeBean root = new NodeBean("用户列表");
root.add(new NodeBean(1, "admin"));
root.add(new NodeBean(2, "root"));
root.add(new NodeBean(3, "test"));
final JTree t = new JTree(root);
t.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
NodeBean n = (NodeBean)t.getLastSelectedPathComponent();
System.out.println(n.getId());
}
});
j.add(t);
j.setVisible(true);
}
}
class NodeBean extends DefaultMutableTreeNode{
private static final long serialVersionUID = 1L;
private int id;
private String user;
public NodeBean(int id, String user) {
super();
this.id = id;
this.user = user;
}
public NodeBean(Object obj){
super(obj);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String toString(){
return (String) (super.userObject!=null?super.userObject:this.user);
}
}