📄 treenodedemo.java
字号:
//TreeNodeDemo.java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
public class TreeNodeDemo extends JFrame
{
protected JTree m_tree ;
protected JTextField m_display;
public TreeNodeDemo()
{
super("SNMP Tree [OID]");
//创建5个树的用户对象引用
//Object[] nodes = new Object[5];
//创建树的根节点(第一层节点)
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);
/*
m_tree =new JTree(top)
{
//setting tree tooltip text
public String getToolTipText(MouseEvent e)
{
//获取鼠标在树组件中选择位置的树的路径
TreePath path = m_tree.getPathForLocation(e.getX(),e.getY());
//如果鼠标没有选择树节点上,则直接返回
if( path == null ) return null;
//获取当前树路径的存储的树节点对象的数组(从根节点到当前树节点)
Object[] nodes = path.getPath();
String oid = "";
for (int k=0; k<nodes.length; k++) {
//强制转化成树节点
DefaultMutableTreeNode treenode = (DefaultMutableTreeNode)nodes[k];
//从树节点中获取其用户对象(OidNode的实例)
OidNode nd = (OidNode)treenode.getUserObject();
//把用户对象的对象标识进行累积
oid += "."+nd.getId();
}
return oid;
}
};
ToolTipManager.sharedInstance().registerComponent(m_tree);
*/
//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);
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[])
{
TreeNodeDemo frame=new TreeNodeDemo();
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 + -