日期:2014-05-20 浏览次数:20946 次
package JTree综合案例;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.io.*;
//定义该类继承自JFrame
public class Test extends JFrame {
private static final long serialVersionUID = 1L;
// 创建并初始化工具栏中的工具按扭数组
private JButton[] jbBar = { new JButton("添加"), new JButton("删除") };
// 创建工具栏
private JToolBar jtb = new JToolBar();
// 创建用来显示情况的文本框
private JTextField jtf = new JTextField();
// 创建根节点
private DefaultMutableTreeNode dmtnRoot = new DefaultMutableTreeNode("目录");
// 创建树的数据模型
private DefaultTreeModel dtm = new DefaultTreeModel(dmtnRoot);
// 创建树状列表控件
private JTree jt = new JTree(dtm);
// 为树状列表创建滚动窗口
private JScrollPane jsp = new JScrollPane(jt);
// 用来记录当前选中节点的成员变量
private DefaultMutableTreeNode tempNode;
// 创建弹出式菜单
private JPopupMenu jpm = new JPopupMenu();
// 创建菜单项数组
private JMenuItem[] jmi = { new JMenuItem("定义非叶子节点展开图标"),
new JMenuItem("定义非叶子节点折叠图标"), new JMenuItem("定义叶子节点图标") };
// 用来作为树相关事件监听器的内部类
private class MyTreeListener implements TreeExpansionListener,
TreeModelListener, TreeSelectionListener {
// 定义用来记录路径的节点数组
private Object[] tempNodes;
// 创建StringBuffer对象
private StringBuffer tempMsg = new StringBuffer();
// 声明用来记录路径TreePath
private TreePath tp;
// 处理选中某节点后发生事件的方法
public void valueChanged(TreeSelectionEvent tse) {
// 获得根节点到选中节点的路径
tp = tse.getNewLeadSelectionPath();
if (tp != null) {
// 从路径中获得所有路径中的节点
tempNodes = tp.getPath();
// 循环对路径中的每个节点进行处理
for (int i = 0; i < tempNodes.length; i++) {
// 将各个节点的内容连接起来并添加到StringBuffer中
tempMsg.append(tempNodes[i]);
if (i != tempNodes.length - 1) {// 在各个节点中间添加“>>”符号
tempMsg.append(">>");
}
}
// 在文本框中显示相应的信息
jtf.setText("您选择了:“" + tempMsg.toString() + "”节点!!!");
// 删除StringBuffer中的所有内容
tempMsg.delete(0, tempMsg.length());
// 记录选中的节点
tempNode = (DefaultMutableTreeNode) tp.getLastPathComponent();
}
}
// 处理节点折叠后发生事件的方法
public void treeCollapsed(TreeExpansionEvent tee) {
// 获得根节点到选中节点的路径
tp = tee.getPath();
// 设置文本框显示相应的信息