在 JBuilder 2005 里,双击 JTree 的 valueChanged 事件后,一切控件都不见了,这到底是为什么呢? 请大家帮忙啊!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 现在控件出来了,可是点了没用,我很郁闷,真的。代码如下:package treedemo;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTree;import java.awt.*;import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;public class TreeDemoFrame extends JFrame { JPanel cntpnTreeDemo; JTree trTreeDemo = new JTree(); JLabel lblParentNodeName = new JLabel(); JLabel lbNodeName = new JLabel(); JLabel lblNodeType = new JLabel(); JLabel lblChildNodeCount = new JLabel(); JTextField txtParentNodeName = new JTextField(); JTextField txtNodeName = new JTextField(); JTextField txtNodeType = new JTextField(); JTextField txtChildNodeCount = new JTextField(); public TreeDemoFrame() { try { setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); } catch (Exception exception) { exception.printStackTrace(); } } /** * Component initialization. * * @throws java.lang.Exception */ private void jbInit() throws Exception { cntpnTreeDemo = (JPanel) getContentPane(); cntpnTreeDemo.setLayout(null); setSize(new Dimension(650, 500)); cntpnTreeDemo.setMaximumSize(new Dimension(600, 400)); cntpnTreeDemo.setPreferredSize(new Dimension(600, 400)); setTitle("欢迎使用 JTree"); /* 创建自定义 JTree */ /* 创建根节点 */ DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); /* 创建第一个枝节点 */ DefaultMutableTreeNode books = new DefaultMutableTreeNode("书籍"); lblChildNodeCount.setBounds(new Rectangle(320, 341, 78, 31)); lblNodeType.setBounds(new Rectangle(320, 250, 76, 32)); lblParentNodeName.setBounds(new Rectangle(317, 86, 93, 19)); lbNodeName.setBounds(new Rectangle(316, 171, 80, 25)); trTreeDemo.addTreeSelectionListener(new TreeDemoFrame_trTreeDemo_treeSelectionAdapter(this)); root.add(books); /* 创建第一个枝节点中的第一个枝节点 */ DefaultMutableTreeNode java = new DefaultMutableTreeNode("Java"); books.add(java); /* 创建第一个枝节点中的第一个枝节点的第一个叶节点 */ DefaultMutableTreeNode integrity = new DefaultMutableTreeNode("完整参考资料"); java.add(integrity); /* 创建第一个枝节点中的第一个枝节点的第二个叶节点 */ DefaultMutableTreeNode useJava = new DefaultMutableTreeNode("Java 编程"); java.add(useJava); /* 创建第一个枝节点中的第一个枝节点的第三个叶节点 */ DefaultMutableTreeNode useAdvancedJava = new DefaultMutableTreeNode("高级 Java 编程"); java.add(useAdvancedJava); /* 创建第一个枝节点中的第二个枝节点 */ DefaultMutableTreeNode Database = new DefaultMutableTreeNode("Database"); books.add(Database); /* 创建第一个枝节点中的第二个枝节点的第一个叶节点 */ DefaultMutableTreeNode learnSQL = new DefaultMutableTreeNode("学习 SQL"); Database.add(learnSQL); /* 创建第一个枝节点中的第二个枝节点的第二个叶节点 */ DefaultMutableTreeNode learnOracle = new DefaultMutableTreeNode("学习 Oracle"); Database.add(learnOracle); /* 创建第一个枝节点中的第二个枝节点的第三个叶节点 */ DefaultMutableTreeNode learnDatabaseProgramming = new DefaultMutableTreeNode("学习数据库编程"); Database.add(learnDatabaseProgramming); /* 创建第一个枝节点中的第三个枝节点 */ DefaultMutableTreeNode jsp = new DefaultMutableTreeNode("JSP"); books.add(jsp); /* 创建第一个枝节点中的第三个枝节点的第一个叶节点 */ DefaultMutableTreeNode learnJSP = new DefaultMutableTreeNode("学习 JSP"); jsp.add(learnJSP); /* 创建第一个枝节点中的第三个枝节点的第二个叶节点 */ DefaultMutableTreeNode useJSPProgramming = new DefaultMutableTreeNode("使用 JSP 编程"); jsp.add(useJSPProgramming); /* 创建第一个枝节点中的第四个枝节点 */ DefaultMutableTreeNode CShape = new DefaultMutableTreeNode("C#"); books.add(CShape); /* 创建第一个枝节点中的第四个枝节点的第一个叶节点 */ DefaultMutableTreeNode useCShapeProgramming = new DefaultMutableTreeNode("使用 C# 编程"); CShape.add(useCShapeProgramming); /* 创建第二个枝节点 */ DefaultMutableTreeNode software = new DefaultMutableTreeNode("软件"); root.add(software); /* 创建第二个枝节点中的第一个枝节点 */ DefaultMutableTreeNode OS = new DefaultMutableTreeNode("操作系统"); software.add(OS); /* 创建第二个枝节点中的第一个枝节点的第一个叶节点 */ DefaultMutableTreeNode MSDOS = new DefaultMutableTreeNode("MS-DOS"); OS.add(MSDOS); /* 创建第二个枝节点中的第一个枝节点的第二个叶节点 */ DefaultMutableTreeNode WIN2000SERVER = new DefaultMutableTreeNode("Windows 2000 Server"); OS.add(WIN2000SERVER); /* 创建第二个枝节点中的第一个枝节点的第三个叶节点 */ DefaultMutableTreeNode WIN2000PRO = new DefaultMutableTreeNode("Windows 2000 Professional"); OS.add(WIN2000PRO); /* 创建第二个枝节点中的第二个枝节点 */ DefaultMutableTreeNode DataBase = new DefaultMutableTreeNode("数据库"); software.add(DataBase); /* 创建第二个枝节点中的第二个枝节点的第一个叶节点 */ DefaultMutableTreeNode MSAccess = new DefaultMutableTreeNode("MSAccess"); DataBase.add(MSAccess); /* 创建第二个枝节点中的第二个枝节点的第二个叶节点 */ DefaultMutableTreeNode MSSQLServer = new DefaultMutableTreeNode("MSSQLServer"); DataBase.add(MSSQLServer); /* 在 JTree 里添加 根节点 */ trTreeDemo = new JTree(root); trTreeDemo.setBounds(new Rectangle(11, 20, 278, 430)); /* 显示节点信息 */ lblParentNodeName.setText("父节点名称:"); lbNodeName.setText("节点名称:"); lblNodeType.setText("节点类型:"); lblChildNodeCount.setText("子节点数:"); txtParentNodeName.setText(""); txtParentNodeName.setBounds(new Rectangle(425, 67, 204, 40)); txtNodeName.setText(""); txtNodeName.setBounds(new Rectangle(424, 159, 207, 41)); txtNodeType.setText(""); txtNodeType.setBounds(new Rectangle(425, 247, 211, 43)); txtChildNodeCount.setText(""); txtChildNodeCount.setBounds(new Rectangle(425, 335, 211, 42)); cntpnTreeDemo.add(txtParentNodeName); cntpnTreeDemo.add(lblParentNodeName); cntpnTreeDemo.add(lblChildNodeCount); cntpnTreeDemo.add(lblNodeType); cntpnTreeDemo.add(txtChildNodeCount); cntpnTreeDemo.add(lbNodeName); cntpnTreeDemo.add(txtNodeName); cntpnTreeDemo.add(txtNodeType); cntpnTreeDemo.add(trTreeDemo); } public void trTreeDemo_valueChanged(TreeSelectionEvent e) { try { DefaultMutableTreeNode node = (DefaultMutableTreeNode) trTreeDemo.getLastSelectedPathComponent(); // 获得当前点击的节点 String nodeName = node.getUserObject().toString(); // 节点名称 if (node.isRoot()) { // 如果是根节点 txtParentNodeName.setText(""); // 父节点名称 txtNodeName.setText(nodeName); // 节点名称 txtNodeType.setText("根节点"); // 节点类型 txtChildNodeCount.setText(Integer.toString(node.getChildCount())); // 子节点数 } else { // 如果不是根节点 txtParentNodeName.setText(node.getParent().toString()); // 父节点名称 txtNodeName.setText(nodeName); // 节点名称 if (node.isLeaf()) { // 如果是叶节点 txtNodeType.setText("叶节点"); // 节点类型 } else { // 如果是枝节点 txtNodeType.setText("枝节点"); // 节点类型 } txtChildNodeCount.setText(Integer.toString(node.getChildCount())); // 子节点数 } } catch (Exception ex) { ex.printStackTrace(); } }}class TreeDemoFrame_trTreeDemo_treeSelectionAdapter implements TreeSelectionListener { private TreeDemoFrame adaptee; TreeDemoFrame_trTreeDemo_treeSelectionAdapter(TreeDemoFrame adaptee) { this.adaptee = adaptee; } public void valueChanged(TreeSelectionEvent e) { adaptee.trTreeDemo_valueChanged(e); }} trTreeDemo在后面又被初始化了(trTreeDemo = new JTree(root);),TreeSelectionListener 根本没add上去。 import java.awt.Dimension;import java.awt.Rectangle;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.JTree;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.TreeSelectionModel;/* @(#)TreeDemoFrame.java 2011-1-21下午04:36:29 * * Copyright 2003-2010 TONECON Hearing Equipment co,ltd.All right reserved. *//** * * @author 龚全超 * @create-time 2011-1-21下午04:36:29 * @revision 3.0 */public class TreeDemoFrame extends JFrame{ JPanel cntpnTreeDemo; JTree trTreeDemo; JLabel lblParentNodeName = new JLabel(); JLabel lbNodeName = new JLabel(); JLabel lblNodeType = new JLabel(); JLabel lblChildNodeCount = new JLabel(); JTextField txtParentNodeName = new JTextField(); JTextField txtNodeName = new JTextField(); JTextField txtNodeType = new JTextField(); JTextField txtChildNodeCount = new JTextField(); public TreeDemoFrame() { try { setDefaultCloseOperation(EXIT_ON_CLOSE); jbInit(); } catch (Exception exception) { exception.printStackTrace(); } } /** * Component initialization. * * @throws java.lang.Exception */ private void jbInit() throws Exception { cntpnTreeDemo = (JPanel) getContentPane(); cntpnTreeDemo.setLayout(null); setSize(new Dimension(650, 500)); cntpnTreeDemo.setMaximumSize(new Dimension(600, 400)); cntpnTreeDemo.setPreferredSize(new Dimension(600, 400)); setTitle("欢迎使用 JTree"); /* 创建自定义 JTree */ /* 创建根节点 */ DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); /* 创建第一个枝节点 */ DefaultMutableTreeNode books = new DefaultMutableTreeNode("书籍"); lblChildNodeCount.setBounds(new Rectangle(320, 341, 78, 31)); lblNodeType.setBounds(new Rectangle(320, 250, 76, 32)); lblParentNodeName.setBounds(new Rectangle(317, 86, 93, 19)); lbNodeName.setBounds(new Rectangle(316, 171, 80, 25)); root.add(books); /* 创建第一个枝节点中的第一个枝节点 */ DefaultMutableTreeNode java = new DefaultMutableTreeNode("Java"); books.add(java); /* 创建第一个枝节点中的第一个枝节点的第一个叶节点 */ DefaultMutableTreeNode integrity = new DefaultMutableTreeNode("完整参考资料"); java.add(integrity); /* 创建第一个枝节点中的第一个枝节点的第二个叶节点 */ DefaultMutableTreeNode useJava = new DefaultMutableTreeNode("Java 编程"); java.add(useJava); /* 创建第一个枝节点中的第一个枝节点的第三个叶节点 */ DefaultMutableTreeNode useAdvancedJava = new DefaultMutableTreeNode( "高级 Java 编程"); java.add(useAdvancedJava); /* 创建第一个枝节点中的第二个枝节点 */ DefaultMutableTreeNode Database = new DefaultMutableTreeNode("Database"); books.add(Database); /* 创建第一个枝节点中的第二个枝节点的第一个叶节点 */ DefaultMutableTreeNode learnSQL = new DefaultMutableTreeNode("学习 SQL"); Database.add(learnSQL); /* 创建第一个枝节点中的第二个枝节点的第二个叶节点 */ DefaultMutableTreeNode learnOracle = new DefaultMutableTreeNode( "学习 Oracle"); Database.add(learnOracle); /* 创建第一个枝节点中的第二个枝节点的第三个叶节点 */ DefaultMutableTreeNode learnDatabaseProgramming = new DefaultMutableTreeNode( "学习数据库编程"); Database.add(learnDatabaseProgramming); /* 创建第一个枝节点中的第三个枝节点 */ DefaultMutableTreeNode jsp = new DefaultMutableTreeNode("JSP"); books.add(jsp); /* 创建第一个枝节点中的第三个枝节点的第一个叶节点 */ DefaultMutableTreeNode learnJSP = new DefaultMutableTreeNode("学习 JSP"); jsp.add(learnJSP); /* 创建第一个枝节点中的第三个枝节点的第二个叶节点 */ DefaultMutableTreeNode useJSPProgramming = new DefaultMutableTreeNode( "使用 JSP 编程"); jsp.add(useJSPProgramming); /* 创建第一个枝节点中的第四个枝节点 */ DefaultMutableTreeNode CShape = new DefaultMutableTreeNode("C#"); books.add(CShape); /* 创建第一个枝节点中的第四个枝节点的第一个叶节点 */ DefaultMutableTreeNode useCShapeProgramming = new DefaultMutableTreeNode( "使用 C# 编程"); CShape.add(useCShapeProgramming); /* 创建第二个枝节点 */ DefaultMutableTreeNode software = new DefaultMutableTreeNode("软件"); root.add(software); /* 创建第二个枝节点中的第一个枝节点 */ DefaultMutableTreeNode OS = new DefaultMutableTreeNode("操作系统"); software.add(OS); /* 创建第二个枝节点中的第一个枝节点的第一个叶节点 */ DefaultMutableTreeNode MSDOS = new DefaultMutableTreeNode("MS-DOS"); OS.add(MSDOS); /* 创建第二个枝节点中的第一个枝节点的第二个叶节点 */ DefaultMutableTreeNode WIN2000SERVER = new DefaultMutableTreeNode( "Windows 2000 Server"); OS.add(WIN2000SERVER); /* 创建第二个枝节点中的第一个枝节点的第三个叶节点 */ DefaultMutableTreeNode WIN2000PRO = new DefaultMutableTreeNode( "Windows 2000 Professional"); OS.add(WIN2000PRO); /* 创建第二个枝节点中的第二个枝节点 */ DefaultMutableTreeNode DataBase = new DefaultMutableTreeNode("数据库"); software.add(DataBase); /* 创建第二个枝节点中的第二个枝节点的第一个叶节点 */ DefaultMutableTreeNode MSAccess = new DefaultMutableTreeNode("MSAccess"); DataBase.add(MSAccess); /* 创建第二个枝节点中的第二个枝节点的第二个叶节点 */ DefaultMutableTreeNode MSSQLServer = new DefaultMutableTreeNode( "MSSQLServer"); DataBase.add(MSSQLServer); /* 在 JTree 里添加 根节点 */ trTreeDemo = new JTree(root); trTreeDemo.setBounds(new Rectangle(11, 20, 278, 430)); trTreeDemo.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); trTreeDemo .addTreeSelectionListener(new TreeDemoFrame_trTreeDemo_treeSelectionAdapter( this)); /* 显示节点信息 */ lblParentNodeName.setText("父节点名称:"); lbNodeName.setText("节点名称:"); lblNodeType.setText("节点类型:"); lblChildNodeCount.setText("子节点数:"); txtParentNodeName.setText(""); txtParentNodeName.setBounds(new Rectangle(425, 67, 204, 40)); txtNodeName.setText(""); txtNodeName.setBounds(new Rectangle(424, 159, 207, 41)); txtNodeType.setText(""); txtNodeType.setBounds(new Rectangle(425, 247, 211, 43)); txtChildNodeCount.setText(""); txtChildNodeCount.setBounds(new Rectangle(425, 335, 211, 42)); cntpnTreeDemo.add(txtParentNodeName); cntpnTreeDemo.add(lblParentNodeName); cntpnTreeDemo.add(lblChildNodeCount); cntpnTreeDemo.add(lblNodeType); cntpnTreeDemo.add(txtChildNodeCount); cntpnTreeDemo.add(lbNodeName); cntpnTreeDemo.add(txtNodeName); cntpnTreeDemo.add(txtNodeType); cntpnTreeDemo.add(trTreeDemo); } public void trTreeDemo_valueChanged(TreeSelectionEvent e) { try { DefaultMutableTreeNode node = (DefaultMutableTreeNode) trTreeDemo .getLastSelectedPathComponent(); // 获得当前点击的节点 String nodeName = node.getUserObject().toString(); // 节点名称 if (node.isRoot()) { // 如果是根节点 txtParentNodeName.setText(""); // 父节点名称 txtNodeName.setText(nodeName); // 节点名称 txtNodeType.setText("根节点"); // 节点类型 txtChildNodeCount.setText(Integer .toString(node.getChildCount())); // 子节点数 } else { // 如果不是根节点 txtParentNodeName.setText(node.getParent().toString()); // 父节点名称 txtNodeName.setText(nodeName); // 节点名称 if (node.isLeaf()) { // 如果是叶节点 txtNodeType.setText("叶节点"); // 节点类型 } else { // 如果是枝节点 txtNodeType.setText("枝节点"); // 节点类型 } txtChildNodeCount.setText(Integer .toString(node.getChildCount())); // 子节点数 } } catch (Exception ex) { ex.printStackTrace(); } } class TreeDemoFrame_trTreeDemo_treeSelectionAdapter implements TreeSelectionListener { private TreeDemoFrame adaptee; TreeDemoFrame_trTreeDemo_treeSelectionAdapter(TreeDemoFrame adaptee) { this.adaptee = adaptee; } public void valueChanged(TreeSelectionEvent e) { adaptee.trTreeDemo_valueChanged(e); } } public static void main(String[] args) { TreeDemoFrame tdf = new TreeDemoFrame(); tdf.setName("TreeDemoFrame"); tdf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); tdf.setVisible(true); }} 大家都来瞧瞧吧,蛮有意思的 java 学习路径--过程篇 根据手机号码判定是中移动或中联通,或判定是哪个省份的号 请教:pdfbox问题 需求帮助!!急急急!! wing$1.class和wing.class关系 如何把List中相同的元素去掉? 如何在ASP的frame框架中屏蔽右键,以防止查看页面的源代码? ------------救我啊,谁有机械出版的<<java程序设计教程3版>>上下册里的习题答案-------------- 使用Statement.java里的execute执行存储过程问题 问一个关于list的问题 java 时间 问题
代码如下:package treedemo;import java.awt.BorderLayout;
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import java.awt.*;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;public class TreeDemoFrame extends JFrame {
JPanel cntpnTreeDemo;
JTree trTreeDemo = new JTree();
JLabel lblParentNodeName = new JLabel();
JLabel lbNodeName = new JLabel();
JLabel lblNodeType = new JLabel();
JLabel lblChildNodeCount = new JLabel();
JTextField txtParentNodeName = new JTextField();
JTextField txtNodeName = new JTextField();
JTextField txtNodeType = new JTextField();
JTextField txtChildNodeCount = new JTextField(); public TreeDemoFrame() {
try {
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
} /**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception {
cntpnTreeDemo = (JPanel) getContentPane();
cntpnTreeDemo.setLayout(null);
setSize(new Dimension(650, 500));
cntpnTreeDemo.setMaximumSize(new Dimension(600, 400));
cntpnTreeDemo.setPreferredSize(new Dimension(600, 400));
setTitle("欢迎使用 JTree"); /* 创建自定义 JTree */
/* 创建根节点 */
DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
/* 创建第一个枝节点 */
DefaultMutableTreeNode books = new DefaultMutableTreeNode("书籍");
lblChildNodeCount.setBounds(new Rectangle(320, 341, 78, 31));
lblNodeType.setBounds(new Rectangle(320, 250, 76, 32));
lblParentNodeName.setBounds(new Rectangle(317, 86, 93, 19));
lbNodeName.setBounds(new Rectangle(316, 171, 80, 25));
trTreeDemo.addTreeSelectionListener(new
TreeDemoFrame_trTreeDemo_treeSelectionAdapter(this));
root.add(books);
/* 创建第一个枝节点中的第一个枝节点 */
DefaultMutableTreeNode java = new DefaultMutableTreeNode("Java");
books.add(java);
/* 创建第一个枝节点中的第一个枝节点的第一个叶节点 */
DefaultMutableTreeNode integrity = new DefaultMutableTreeNode("完整参考资料");
java.add(integrity);
/* 创建第一个枝节点中的第一个枝节点的第二个叶节点 */
DefaultMutableTreeNode useJava = new DefaultMutableTreeNode("Java 编程");
java.add(useJava);
/* 创建第一个枝节点中的第一个枝节点的第三个叶节点 */
DefaultMutableTreeNode useAdvancedJava = new DefaultMutableTreeNode("高级 Java 编程");
java.add(useAdvancedJava);
/* 创建第一个枝节点中的第二个枝节点 */
DefaultMutableTreeNode Database = new DefaultMutableTreeNode("Database");
books.add(Database);
/* 创建第一个枝节点中的第二个枝节点的第一个叶节点 */
DefaultMutableTreeNode learnSQL = new DefaultMutableTreeNode("学习 SQL");
Database.add(learnSQL);
/* 创建第一个枝节点中的第二个枝节点的第二个叶节点 */
DefaultMutableTreeNode learnOracle = new DefaultMutableTreeNode("学习 Oracle");
Database.add(learnOracle);
/* 创建第一个枝节点中的第二个枝节点的第三个叶节点 */
DefaultMutableTreeNode learnDatabaseProgramming = new DefaultMutableTreeNode("学习数据库编程");
Database.add(learnDatabaseProgramming);
/* 创建第一个枝节点中的第三个枝节点 */
DefaultMutableTreeNode jsp = new DefaultMutableTreeNode("JSP");
books.add(jsp);
/* 创建第一个枝节点中的第三个枝节点的第一个叶节点 */
DefaultMutableTreeNode learnJSP = new DefaultMutableTreeNode("学习 JSP");
jsp.add(learnJSP);
/* 创建第一个枝节点中的第三个枝节点的第二个叶节点 */
DefaultMutableTreeNode useJSPProgramming = new DefaultMutableTreeNode("使用 JSP 编程");
jsp.add(useJSPProgramming);
/* 创建第一个枝节点中的第四个枝节点 */
DefaultMutableTreeNode CShape = new DefaultMutableTreeNode("C#");
books.add(CShape);
/* 创建第一个枝节点中的第四个枝节点的第一个叶节点 */
DefaultMutableTreeNode useCShapeProgramming = new DefaultMutableTreeNode("使用 C# 编程");
CShape.add(useCShapeProgramming); /* 创建第二个枝节点 */
DefaultMutableTreeNode software = new DefaultMutableTreeNode("软件");
root.add(software);
/* 创建第二个枝节点中的第一个枝节点 */
DefaultMutableTreeNode OS = new DefaultMutableTreeNode("操作系统");
software.add(OS);
/* 创建第二个枝节点中的第一个枝节点的第一个叶节点 */
DefaultMutableTreeNode MSDOS = new DefaultMutableTreeNode("MS-DOS");
OS.add(MSDOS);
/* 创建第二个枝节点中的第一个枝节点的第二个叶节点 */
DefaultMutableTreeNode WIN2000SERVER = new DefaultMutableTreeNode("Windows 2000 Server");
OS.add(WIN2000SERVER);
/* 创建第二个枝节点中的第一个枝节点的第三个叶节点 */
DefaultMutableTreeNode WIN2000PRO = new DefaultMutableTreeNode("Windows 2000 Professional");
OS.add(WIN2000PRO);
/* 创建第二个枝节点中的第二个枝节点 */
DefaultMutableTreeNode DataBase = new DefaultMutableTreeNode("数据库");
software.add(DataBase);
/* 创建第二个枝节点中的第二个枝节点的第一个叶节点 */
DefaultMutableTreeNode MSAccess = new DefaultMutableTreeNode("MSAccess");
DataBase.add(MSAccess);
/* 创建第二个枝节点中的第二个枝节点的第二个叶节点 */
DefaultMutableTreeNode MSSQLServer = new DefaultMutableTreeNode("MSSQLServer");
DataBase.add(MSSQLServer); /* 在 JTree 里添加 根节点 */
trTreeDemo = new JTree(root);
trTreeDemo.setBounds(new Rectangle(11, 20, 278, 430)); /* 显示节点信息 */
lblParentNodeName.setText("父节点名称:");
lbNodeName.setText("节点名称:");
lblNodeType.setText("节点类型:");
lblChildNodeCount.setText("子节点数:");
txtParentNodeName.setText("");
txtParentNodeName.setBounds(new Rectangle(425, 67, 204, 40));
txtNodeName.setText("");
txtNodeName.setBounds(new Rectangle(424, 159, 207, 41));
txtNodeType.setText("");
txtNodeType.setBounds(new Rectangle(425, 247, 211, 43));
txtChildNodeCount.setText("");
txtChildNodeCount.setBounds(new Rectangle(425, 335, 211, 42));
cntpnTreeDemo.add(txtParentNodeName);
cntpnTreeDemo.add(lblParentNodeName);
cntpnTreeDemo.add(lblChildNodeCount);
cntpnTreeDemo.add(lblNodeType);
cntpnTreeDemo.add(txtChildNodeCount);
cntpnTreeDemo.add(lbNodeName);
cntpnTreeDemo.add(txtNodeName);
cntpnTreeDemo.add(txtNodeType);
cntpnTreeDemo.add(trTreeDemo);
} public void trTreeDemo_valueChanged(TreeSelectionEvent e) {
try {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)
trTreeDemo.getLastSelectedPathComponent(); // 获得当前点击的节点
String nodeName = node.getUserObject().toString(); // 节点名称 if (node.isRoot()) { // 如果是根节点
txtParentNodeName.setText(""); // 父节点名称
txtNodeName.setText(nodeName); // 节点名称
txtNodeType.setText("根节点"); // 节点类型
txtChildNodeCount.setText(Integer.toString(node.getChildCount())); // 子节点数
} else { // 如果不是根节点
txtParentNodeName.setText(node.getParent().toString()); // 父节点名称
txtNodeName.setText(nodeName); // 节点名称 if (node.isLeaf()) { // 如果是叶节点
txtNodeType.setText("叶节点"); // 节点类型
} else { // 如果是枝节点
txtNodeType.setText("枝节点"); // 节点类型
} txtChildNodeCount.setText(Integer.toString(node.getChildCount())); // 子节点数
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
class TreeDemoFrame_trTreeDemo_treeSelectionAdapter implements
TreeSelectionListener {
private TreeDemoFrame adaptee;
TreeDemoFrame_trTreeDemo_treeSelectionAdapter(TreeDemoFrame adaptee) {
this.adaptee = adaptee;
} public void valueChanged(TreeSelectionEvent e) {
adaptee.trTreeDemo_valueChanged(e);
}
}
import java.awt.Dimension;
import java.awt.Rectangle;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeSelectionModel;/* @(#)TreeDemoFrame.java 2011-1-21下午04:36:29
*
* Copyright 2003-2010 TONECON Hearing Equipment co,ltd.All right reserved.
*//**
*
* @author 龚全超
* @create-time 2011-1-21下午04:36:29
* @revision 3.0
*/public class TreeDemoFrame extends JFrame
{
JPanel cntpnTreeDemo;
JTree trTreeDemo;
JLabel lblParentNodeName = new JLabel();
JLabel lbNodeName = new JLabel();
JLabel lblNodeType = new JLabel();
JLabel lblChildNodeCount = new JLabel();
JTextField txtParentNodeName = new JTextField();
JTextField txtNodeName = new JTextField();
JTextField txtNodeType = new JTextField();
JTextField txtChildNodeCount = new JTextField(); public TreeDemoFrame()
{
try
{
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}
catch (Exception exception)
{
exception.printStackTrace();
}
} /**
* Component initialization.
*
* @throws java.lang.Exception
*/
private void jbInit() throws Exception
{
cntpnTreeDemo = (JPanel) getContentPane();
cntpnTreeDemo.setLayout(null);
setSize(new Dimension(650, 500));
cntpnTreeDemo.setMaximumSize(new Dimension(600, 400));
cntpnTreeDemo.setPreferredSize(new Dimension(600, 400));
setTitle("欢迎使用 JTree"); /* 创建自定义 JTree */
/* 创建根节点 */
DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
/* 创建第一个枝节点 */
DefaultMutableTreeNode books = new DefaultMutableTreeNode("书籍");
lblChildNodeCount.setBounds(new Rectangle(320, 341, 78, 31));
lblNodeType.setBounds(new Rectangle(320, 250, 76, 32));
lblParentNodeName.setBounds(new Rectangle(317, 86, 93, 19));
lbNodeName.setBounds(new Rectangle(316, 171, 80, 25)); root.add(books);
/* 创建第一个枝节点中的第一个枝节点 */
DefaultMutableTreeNode java = new DefaultMutableTreeNode("Java");
books.add(java);
/* 创建第一个枝节点中的第一个枝节点的第一个叶节点 */
DefaultMutableTreeNode integrity = new DefaultMutableTreeNode("完整参考资料");
java.add(integrity);
/* 创建第一个枝节点中的第一个枝节点的第二个叶节点 */
DefaultMutableTreeNode useJava = new DefaultMutableTreeNode("Java 编程");
java.add(useJava);
/* 创建第一个枝节点中的第一个枝节点的第三个叶节点 */
DefaultMutableTreeNode useAdvancedJava = new DefaultMutableTreeNode(
"高级 Java 编程");
java.add(useAdvancedJava);
/* 创建第一个枝节点中的第二个枝节点 */
DefaultMutableTreeNode Database = new DefaultMutableTreeNode("Database");
books.add(Database);
/* 创建第一个枝节点中的第二个枝节点的第一个叶节点 */
DefaultMutableTreeNode learnSQL = new DefaultMutableTreeNode("学习 SQL");
Database.add(learnSQL);
/* 创建第一个枝节点中的第二个枝节点的第二个叶节点 */
DefaultMutableTreeNode learnOracle = new DefaultMutableTreeNode(
"学习 Oracle");
Database.add(learnOracle);
/* 创建第一个枝节点中的第二个枝节点的第三个叶节点 */
DefaultMutableTreeNode learnDatabaseProgramming = new DefaultMutableTreeNode(
"学习数据库编程");
Database.add(learnDatabaseProgramming);
/* 创建第一个枝节点中的第三个枝节点 */
DefaultMutableTreeNode jsp = new DefaultMutableTreeNode("JSP");
books.add(jsp);
/* 创建第一个枝节点中的第三个枝节点的第一个叶节点 */
DefaultMutableTreeNode learnJSP = new DefaultMutableTreeNode("学习 JSP");
jsp.add(learnJSP);
/* 创建第一个枝节点中的第三个枝节点的第二个叶节点 */
DefaultMutableTreeNode useJSPProgramming = new DefaultMutableTreeNode(
"使用 JSP 编程");
jsp.add(useJSPProgramming);
/* 创建第一个枝节点中的第四个枝节点 */
DefaultMutableTreeNode CShape = new DefaultMutableTreeNode("C#");
books.add(CShape);
/* 创建第一个枝节点中的第四个枝节点的第一个叶节点 */
DefaultMutableTreeNode useCShapeProgramming = new DefaultMutableTreeNode(
"使用 C# 编程");
CShape.add(useCShapeProgramming); /* 创建第二个枝节点 */
DefaultMutableTreeNode software = new DefaultMutableTreeNode("软件");
root.add(software);
/* 创建第二个枝节点中的第一个枝节点 */
DefaultMutableTreeNode OS = new DefaultMutableTreeNode("操作系统");
software.add(OS);
/* 创建第二个枝节点中的第一个枝节点的第一个叶节点 */
DefaultMutableTreeNode MSDOS = new DefaultMutableTreeNode("MS-DOS");
OS.add(MSDOS);
/* 创建第二个枝节点中的第一个枝节点的第二个叶节点 */
DefaultMutableTreeNode WIN2000SERVER = new DefaultMutableTreeNode(
"Windows 2000 Server");
OS.add(WIN2000SERVER);
/* 创建第二个枝节点中的第一个枝节点的第三个叶节点 */
DefaultMutableTreeNode WIN2000PRO = new DefaultMutableTreeNode(
"Windows 2000 Professional");
OS.add(WIN2000PRO);
/* 创建第二个枝节点中的第二个枝节点 */
DefaultMutableTreeNode DataBase = new DefaultMutableTreeNode("数据库");
software.add(DataBase);
/* 创建第二个枝节点中的第二个枝节点的第一个叶节点 */
DefaultMutableTreeNode MSAccess = new DefaultMutableTreeNode("MSAccess");
DataBase.add(MSAccess);
/* 创建第二个枝节点中的第二个枝节点的第二个叶节点 */
DefaultMutableTreeNode MSSQLServer = new DefaultMutableTreeNode(
"MSSQLServer");
DataBase.add(MSSQLServer); /* 在 JTree 里添加 根节点 */
trTreeDemo = new JTree(root);
trTreeDemo.setBounds(new Rectangle(11, 20, 278, 430));
trTreeDemo.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
trTreeDemo
.addTreeSelectionListener(new TreeDemoFrame_trTreeDemo_treeSelectionAdapter(
this)); /* 显示节点信息 */
lblParentNodeName.setText("父节点名称:");
lbNodeName.setText("节点名称:");
lblNodeType.setText("节点类型:");
lblChildNodeCount.setText("子节点数:");
txtParentNodeName.setText("");
txtParentNodeName.setBounds(new Rectangle(425, 67, 204, 40));
txtNodeName.setText("");
txtNodeName.setBounds(new Rectangle(424, 159, 207, 41));
txtNodeType.setText("");
txtNodeType.setBounds(new Rectangle(425, 247, 211, 43));
txtChildNodeCount.setText("");
txtChildNodeCount.setBounds(new Rectangle(425, 335, 211, 42));
cntpnTreeDemo.add(txtParentNodeName);
cntpnTreeDemo.add(lblParentNodeName);
cntpnTreeDemo.add(lblChildNodeCount);
cntpnTreeDemo.add(lblNodeType);
cntpnTreeDemo.add(txtChildNodeCount);
cntpnTreeDemo.add(lbNodeName);
cntpnTreeDemo.add(txtNodeName);
cntpnTreeDemo.add(txtNodeType);
cntpnTreeDemo.add(trTreeDemo);
} public void trTreeDemo_valueChanged(TreeSelectionEvent e)
{
try
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) trTreeDemo
.getLastSelectedPathComponent(); // 获得当前点击的节点
String nodeName = node.getUserObject().toString(); // 节点名称
if (node.isRoot())
{ // 如果是根节点
txtParentNodeName.setText(""); // 父节点名称
txtNodeName.setText(nodeName); // 节点名称
txtNodeType.setText("根节点"); // 节点类型
txtChildNodeCount.setText(Integer
.toString(node.getChildCount())); // 子节点数
}
else
{ // 如果不是根节点
txtParentNodeName.setText(node.getParent().toString()); // 父节点名称
txtNodeName.setText(nodeName); // 节点名称 if (node.isLeaf())
{ // 如果是叶节点
txtNodeType.setText("叶节点"); // 节点类型
}
else
{ // 如果是枝节点
txtNodeType.setText("枝节点"); // 节点类型
} txtChildNodeCount.setText(Integer
.toString(node.getChildCount())); // 子节点数
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
} class TreeDemoFrame_trTreeDemo_treeSelectionAdapter implements
TreeSelectionListener
{
private TreeDemoFrame adaptee; TreeDemoFrame_trTreeDemo_treeSelectionAdapter(TreeDemoFrame adaptee)
{
this.adaptee = adaptee;
} public void valueChanged(TreeSelectionEvent e)
{
adaptee.trTreeDemo_valueChanged(e);
}
} public static void main(String[] args)
{
TreeDemoFrame tdf = new TreeDemoFrame();
tdf.setName("TreeDemoFrame");
tdf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tdf.setVisible(true);
}}