实现TreeModel : 树模型 « Swing « Java 教程

En
Java 教程
1. 语言基础
2. 数据类型
3. 操作符
4. 流程控制
5. 类定义
6. 开发相关
7. 反射
8. 正则表达式
9. 集合
10. 线
11. 文件
12. 泛型
13. 本土化
14. Swing
15. Swing事件
16. 二维图形
17. SWT
18. SWT 二维图形
19. 网络
20. 数据库
21. Hibernate
22. JPA
23. JSP
24. JSTL
25. Servlet
26. Web服务SOA
27. EJB3
28. Spring
29. PDF
30. 电子邮件
31. 基于J2ME
32. J2EE应用
33. XML
34. 设计模式
35. 日志
36. 安全
37. Apache工具
38. 蚂蚁编译
39. JUnit单元测试
Java
Java 教程 » Swing » 树模型 
14. 68. 2. 实现TreeModel
实现TreeModel
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Enumeration;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.WindowConstants;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;

public class UIDefaultsTreeModel implements TreeModel {
  DefaultTreeModel innerModel;

  DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("UIDefaults");

  DefaultMutableTreeNode colorNode = new DefaultMutableTreeNode("Color Resources");

  DefaultMutableTreeNode borderNode = new DefaultMutableTreeNode("Border Resources");

  DefaultMutableTreeNode fontNode = new DefaultMutableTreeNode("Font Resources");

  DefaultMutableTreeNode iconNode = new DefaultMutableTreeNode("Icon Resources");

  DefaultMutableTreeNode otherNode = new DefaultMutableTreeNode("Other Resources");

  public UIDefaultsTreeModel() {
    innerModel = new DefaultTreeModel(rootNode);
    innerModel.insertNodeInto(colorNode, rootNode, 0);
    innerModel.insertNodeInto(borderNode, rootNode, 1);
    innerModel.insertNodeInto(fontNode, rootNode, 2);
    innerModel.insertNodeInto(iconNode, rootNode, 3);
    innerModel.insertNodeInto(otherNode, rootNode, 4);
    UIDefaults defaults = UIManager.getDefaults();
    Enumeration elems = defaults.keys();
    String keyName;
    Object valueForKey;
    while (elems.hasMoreElements()) {
      DefaultMutableTreeNode newKeyNode;
      DefaultMutableTreeNode newValueNode;
      try {
        keyName = elems.nextElement().toString();
        valueForKey = defaults.get(keyName);

        newKeyNode = new DefaultMutableTreeNode(keyName);
        newValueNode = new DefaultMutableTreeNode(valueForKey);

        if (valueForKey instanceof java.awt.Color) {
          innerModel.insertNodeInto(newKeyNode, colorNode, 0);
        else if (valueForKey instanceof javax.swing.border.Border) {
          innerModel.insertNodeInto(newKeyNode, borderNode, 0);
        else if (valueForKey instanceof java.awt.Font) {
          innerModel.insertNodeInto(newKeyNode, fontNode, 0);
        else if (valueForKey instanceof javax.swing.Icon) {
          innerModel.insertNodeInto(newKeyNode, iconNode, 0);
        else {
          innerModel.insertNodeInto(newKeyNode, otherNode, 0);
        }
        innerModel.insertNodeInto(newValueNode, newKeyNode, 0);
      catch (NullPointerException e) {
      }
    }
  }

  public Object getRoot() {
    return innerModel.getRoot();
  }

  public Object getChild(Object parm1, int parm2) {
    return innerModel.getChild(parm1, parm2);
  }

  public int getChildCount(Object parm1) {
    return innerModel.getChildCount(parm1);
  }

  public boolean isLeaf(Object parm1) {
    return innerModel.isLeaf(parm1);
  }

  public void valueForPathChanged(TreePath parm1, Object parm2) {
    innerModel.valueForPathChanged(parm1, parm2);
  }

  public int getIndexOfChild(Object parm1, Object parm2) {
    return innerModel.getIndexOfChild(parm1, parm2);
  }

  public void addTreeModelListener(TreeModelListener parm1) {
    innerModel.addTreeModelListener(parm1);
  }

  public void removeTreeModelListener(TreeModelListener parm1) {
    innerModel.removeTreeModelListener(parm1);
  }

  public static void main(String[] args) {
    JFrame treeFrame1 = new JFrame();

    JScrollPane jScrollPane1 = new JScrollPane();
    JTree jTree1 = new JTree(new UIDefaultsTreeModel());

    treeFrame1.setSize(new Dimension(400300));
    treeFrame1.addWindowListener(new WindowAdapter() {
      public void windowClosed(WindowEvent e) {
        System.exit(0);
      }
    });
    treeFrame1.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    treeFrame1.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
    jScrollPane1.getViewport().add(jTree1, null);

    treeFrame1.setVisible(true);
  }
}
14. 68. 树模型
14. 68. 1. 树节点编辑与DefaultTreeModel
14. 68. 2. 实现TreeModel实现TreeModel
14. 68. 3. 谱系树
14. 68. 4. JTree.getModel().addTreeModelListener(new TreeModelListener())
www.java2java.com | Contact Us
Copyright 2010 - 2030 Java Source and Support. All rights reserved.
All other trademarks are property of their respective owners.