package tree;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeSelectionModel;
public class treenode extends JFrame implements TreeSelectionListener{
JLabel jl;
public treenode()
{
super("树形结构");
//创建根节点和子节点
DefaultMutableTreeNode root=new DefaultMutableTreeNode("文本编辑器");
DefaultMutableTreeNode node1=new DefaultMutableTreeNode("文件");
DefaultMutableTreeNode node2=new DefaultMutableTreeNode("编辑");
//利用根节点创建treemodel
DefaultTreeModel treemodel=new DefaultTreeModel(root);
//插入子节点
treemodel.insertNodeInto(node1, root, root.getChildCount());
treemodel.insertNodeInto(node2, root, root.getChildCount());
//创建node1的子节点并插入
DefaultMutableTreeNode leafnode=new DefaultMutableTreeNode("打开");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());
leafnode=new DefaultMutableTreeNode("保存");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());
leafnode=new DefaultMutableTreeNode("另存为");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());
leafnode=new DefaultMutableTreeNode("关闭");
treemodel.insertNodeInto(leafnode, node1, node1.getChildCount());
//创建node2的子节点并插入
leafnode=new DefaultMutableTreeNode("剪切");
treemodel.insertNodeInto(leafnode, node2, node2.getChildCount());
leafnode=new DefaultMutableTreeNode("复制");
treemodel.insertNodeInto(leafnode, node2, node2.getChildCount());
leafnode=new DefaultMutableTreeNode("粘贴");
treemodel.insertNodeInto(leafnode, node2, node2.getChildCount());
//创建树对象
JTree tree =new JTree(treemodel);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addTreeSelectionListener(this);
tree.setRowHeight(20);
//创建节点绘制对象
DefaultTreeCellRenderer cell=(DefaultTreeCellRenderer)tree.getCellRenderer();
//设置字体
cell.setFont(new Font("Serif",Font.PLAIN,14));
cell.setBackgroundNonSelectionColor(Color.white);
cell.setBackgroundSelectionColor(Color.LIGHT_GRAY);
cell.setForeground(Color.red);
cell.setIcon(new ImageIcon("/image/folder.jpg"));
//设置选中和不选中时文字的变化颜色
cell.setTextNonSelectionColor(Color.black);
cell.setTextNonSelectionColor(Color.black);
this.add(new JScrollPane(tree));
jl=new JLabel("你当前选择的节点为:",JLabel.CENTER);
jl.setFont(new Font("Serif",Font.PLAIN,14));
this.add(jl,BorderLayout.SOUTH);
this.setSize(400, 400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
treenode t=new treenode();
}
@Override
public void valueChanged(TreeSelectionEvent e) {
// TODO Auto-generated method stub
JTree tree=(JTree)e.getSource();
//获取当前选中的节点
DefaultMutableTreeNode selectnode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
String nodename=selectnode.toString();
jl.setText("您当前选择的节点为:"+nodename);
}
}