⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treetest.java

📁 JAVA编程百例书中各章节的所有例子的源代码,包括套接字编程
💻 JAVA
字号:
package ch02.section10;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;

public class TreeTest
    extends JFrame {
  protected JTree m_tree;
  protected JTextField m_display;

  public TreeTest() {
    super("树形控件");

    //创建树的根节点(第一层节点)
    DefaultMutableTreeNode top = new DefaultMutableTreeNode(
        new OidNode(1, "ISO"));
    DefaultMutableTreeNode parent = top;

    //创建树根节点的子节点(第二层节点)
    DefaultMutableTreeNode node = new DefaultMutableTreeNode(new OidNode(0,
        "standard"));
    parent.add(node);
    node = new DefaultMutableTreeNode(new OidNode(2, "member-body"));
    parent.add(node);
    node = new DefaultMutableTreeNode(new OidNode(3, "org"));
    parent.add(node);
    parent = node;

    //创建第二层节点的子节点(第三层节点)
    node = new DefaultMutableTreeNode(new OidNode(6, "dod"));
    parent.add(node);
    parent = node;
    //创建第三层节点的子节点(第四层节点)
    node = new DefaultMutableTreeNode(new OidNode(1, "internet"));
    parent.add(node);
    parent = node;
    //创建第四层节点的子节点(第五层节点)
    node = new DefaultMutableTreeNode(new OidNode(1, "directory"));
    parent.add(node);
    node = new DefaultMutableTreeNode(new OidNode(2, "mgmt"));
    parent.add(node);
    node.add(new DefaultMutableTreeNode(new OidNode(1, "mib-2")));
    node = new DefaultMutableTreeNode(new OidNode(3, "experimental"));
    parent.add(node);
    node = new DefaultMutableTreeNode(new OidNode(4, "private"));
    node.add(new DefaultMutableTreeNode(new OidNode(1, "enterprises")));
    parent.add(node);
    node = new DefaultMutableTreeNode(new OidNode(5, "security"));
    parent.add(node);
    node = new DefaultMutableTreeNode(new OidNode(6, "snmpV2"));
    parent.add(node);
    node = new DefaultMutableTreeNode(new OidNode(7, "mail"));
    parent.add(node);

    //以树的根节点构造整个树
    m_tree = new JTree(top);
    //display root handle of tree
    m_tree.setShowsRootHandles(true);
    //Setting root line for Tree
    m_tree.putClientProperty("JTree.lineStyle", "Angled");
    //设置树的树节点是不可编辑的
    m_tree.setEditable(false);
    //添加监视树的鼠标事件
    m_tree.addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent e) {
        tvwTreeView_mouseClicked(e);
      }
    });

    //把树组件加入到滚动面板中
    JScrollPane s = new JScrollPane(m_tree);
    getContentPane().add(s, BorderLayout.CENTER);

//    JButton jb = new JButton();
    m_display = new JTextField();
    m_display.setEditable(false);
    getContentPane().add(m_display, BorderLayout.SOUTH);
    //显示框架窗口
    setSize(400, 300);
    setVisible(true);
  }

  public static void main(String argv[]) {
    TreeTest frame = new TreeTest();

    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }

  //处理树组件的鼠标单击事件
  private void tvwTreeView_mouseClicked(MouseEvent e) {
    //获取鼠标在树组件中选择位置的树的路径
    TreePath path = m_tree.getPathForLocation(e.getX(), e.getY());
    //如果鼠标没有选择树节点上,则直接返回
    if (path == null) {
      return;
    }
    //获取当前树路径的存储的树节点对象的数组(从根节点到当前树节点)
    Object[] nodes = path.getPath();
    String oid = "";
    for (int k = 0; k < nodes.length; k++) {
      //强制转化成树节点
      DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodes[k];
      //从树节点中获取其用户对象(OidNode的实例)
      OidNode nd = (OidNode) node.getUserObject();
      //把用户对象的对象名称进行累积
      oid += "." + nd.getName();
    }
    m_display.setText(oid);
  }
}

//树的用户对象类(UserObject),用于封装SNMP的OID
class OidNode {
  //对象标识
  private int m_id;

  //对象名称
  private String m_name;

  //构造方法
  public OidNode(int id, String name) {
    m_id = id;
    m_name = name;
  }

  //获取对象标识
  public int getId() {
    return m_id;
  }

  //得到对象名称
  public String getName() {
    return m_name;
  }

  //用户对象的字符串化,这个方法重写了Object.toString()
  public String toString() {
    return m_name;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -