import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
class JTreeTest
{
JFrame f = new JFrame("JTree的用法");
JScrollPane jsp = new JScrollPane();
JPanel jp = new JPanel(new GridLayout(3,1,5,10));
JLabel l1 = new JLabel("显示节点路径");
JLabel l2 = new JLabel("显示节点索引");
JLabel l3 = new JLabel("显示节点对象");
Font ft = new Font("Serif",Font.BOLD,18);
JTree tr;
void go()
{
DefaultMutableTreeNode root,node1,node11;
f.getContentPane().add(jsp);
f.getContentPane().add("East",jp);
jp.add(l1);jp.add(l2);jp.add(l3);
jp.setBackground(Color.white);
root = new DefaultMutableTreeNode("学校");
root.add(node1 = new DefaultMutableTreeNode("南京师范大学"));
node1.add(node11 = new DefaultMutableTreeNode("数科院"));
node11.add(new DefaultMutableTreeNode("计算机系"));
node11.add(new DefaultMutableTreeNode("软件工程系"));
node11.add(new DefaultMutableTreeNode("数学系"));
node1.add(node11 = new DefaultMutableTreeNode("文学院"));
node11.add(new DefaultMutableTreeNode("古代文学系"));
node11.add(new DefaultMutableTreeNode("现代文学系"));
root.add(node1 = new DefaultMutableTreeNode("东南大学"));
node1.add(node11 = new DefaultMutableTreeNode("建筑学院"));
node11.add(new DefaultMutableTreeNode("设计系"));
node11.add(new DefaultMutableTreeNode("材料系"));
node11.add(new DefaultMutableTreeNode("力学系"));
node1.add(node11 = new DefaultMutableTreeNode("计算机学院"));
node11.add(new DefaultMutableTreeNode("网络系"));
node11.add(new DefaultMutableTreeNode("计算机安全系"));
root.add(node1 = new DefaultMutableTreeNode("海南大学"));
tr = new JTree(root);
tr.setFont(ft);
tr.setShowsRootHandles(true);
jsp.getViewport().add(tr);
l1.setFont(ft);
l2.setFont(ft);
l3.setFont(ft);
f.setSize(400,350);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setResizable(true);
f.setVisible(true);
tr.addTreeSelectionListener(new TreeH());
}
public static void main(String[] args)
{
JTreeTest that = new JTreeTest();
that.go();
}
class TreeH implements TreeSelectionListener
{
public void valueChanged(TreeSelectionEvent e)
{
TreePath tp;
int idx;
String str;
DefaultMutableTreeNode dmt;
tp = tr.getSelectionPath();
dmt = (DefaultMutableTreeNode)tr.getLastSelectedPathComponent();
str = (String)dmt.getUserObject();
idx = tr.getRowForPath(tp);
l1.setText(tp.toString());
l2.setText("索引=" +idx);
l3.setText(str);
}
}
}
本文介绍了一个使用 Java Swing 的 JTree 控件创建树形结构视图的示例程序。该程序展示了如何构建多层次的节点结构,并通过监听选择事件来显示所选节点的路径、索引及对象。
1859

被折叠的 条评论
为什么被折叠?



