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

📄 simpletree.java

📁 梦界家园程序开发基底框架
💻 JAVA
字号:
package jm.framework.gui.module.jmtree;

import javax.swing.tree.TreeCellRenderer;

import jm.framework.gui.module.JMScrollPane;
import jm.framework.gui.module.jmtree.model.JMNode;
import jm.framework.gui.module.jmtree.model.JMTreeNode;
import jm.util.JM2DArray;
import jm.util.JMCheck;
import jm.util.JMMap;
import jm.util.JMVector;

/**
 *
 * <p>Title: SimpleTree</p>
 *
 * <p>Copyright: Copyright (c) 2004-2006</p>
 *
 * <p>Company: 1SHome</p>
 *
 * <p>@author Spook</p>
 *
 * @version 1.2.1
 * @see JDK 1.5.0.6
 */
public class SimpleTree extends JMScrollPane {
    /**
     *
     */
    private static final long serialVersionUID = 8353095462186051782L;

    protected static final String CLASS_NAME = "SimpleTree";

    JMTree tree = null;

    Object data = null;

    JMTreeNode root = null;

    public SimpleTree (String name, JMVector<JMNode> datasSource) {
        root = new JMTreeNode(JMNode.NODE_PATH, JMNode.NODE_CODE, name, JMNode.NODE_VALUE);
        tree = new JMTree(root);
        data = datasSource;
        try {
            creatTree();
            this.getViewport().add(tree);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    //0:path,1:code,2:name,3:value
    public SimpleTree (String name, JM2DArray datasSource) {
        root = new JMTreeNode(JMNode.NODE_PATH, JMNode.NODE_CODE, name, JMNode.NODE_VALUE);
        tree = new JMTree(root);
        data = datasSource;
        try {
            creatTree();
            this.getViewport().add(tree);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    /**
     * 设置树的名称
     * @param name String
     */
    public void setRootName (String name) {
        root.setNodeName(name);
    }

    /**
     * 设置树
     * @param treeCellRenderer TreeCellRenderer
     */
    public void setCellRenderer (TreeCellRenderer treeCellRenderer) {
        tree.setCellRenderer(treeCellRenderer);
    }

    /**
     * 创建树
     * @throws Exception
     */
    public void init () throws Exception {
        try {
            tree.removeAll();
            creatTree();
            this.getViewport().add(tree);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void expandAllRow(){
        try{
            int rows = 1;
            if (data instanceof JMVector) {
                rows = ((JMVector) data).size();
            } else if (data instanceof JM2DArray) {
                rows = ((JM2DArray) data).rowCount();
            }
            for (int i = 0; i < rows; i++) {
                tree.expandRow(i);
            }
        }catch(Exception e){

        }
    }

    /**
     * 创建树
     * @throws Exception
     */
    protected void creatTree () throws Exception {
        if (data instanceof JMVector) {
            creatTreeWithJMVector();
        } else if (data instanceof JM2DArray) {
            creatTreeWithJM2DArray();
        }
    }

    /**
     * 创建树
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
	protected void creatTreeWithJMVector () throws Exception {
        if (data == null) {
            return;
        }
        JMVector<JMTreeNode> dataSource = (JMVector<JMTreeNode>) data;
        if (dataSource.size() == 0) {
            return;
        }

        JMMap<String, JMTreeNode> values = new JMMap<String, JMTreeNode>();
        while (values.size() < dataSource.size()) {
            for (JMTreeNode tempInNode : dataSource)
            {
                addNode(values, tempInNode);
            }
        }
    }

    /**
     * 创建树
     * @throws Exception
     */
    protected void creatTreeWithJM2DArray () throws Exception {
        if (data == null) {
            return;
        }
        JM2DArray dataSource = (JM2DArray) data;
        if (dataSource.rowCount() == 0) {
            return;
        }

        JMTreeNode tempInNode = null;
        JMMap<String, JMTreeNode> values = new JMMap<String, JMTreeNode>();
       // boolean treeSure = false;
        //while (values.size() < dataSource.rowCount()) {
            //生成Tree
            for (int i = 0; i < dataSource.rowCount(); i++) {
                if (values.containsKey(dataSource.getStringValue(i, JMNode.NODE_CODE))) {
                    continue;
                }
                tempInNode = new JMTreeNode(
                        dataSource.getStringValue(i, JMNode.NODE_PATH),
                        dataSource.getStringValue(i, JMNode.NODE_CODE),
                        dataSource.getStringValue(i, JMNode.NODE_NAME),
                        dataSource.getStringValue(i, JMNode.NODE_VALUE)
                             );
                if(dataSource.getColNames().contains(JMNode.NODE_RESERVE01)){
                    tempInNode.getUserObject().setNodeReserve01(dataSource.getStringValue(i, JMNode.NODE_RESERVE01));
                }
                if(dataSource.getColNames().contains(JMNode.NODE_RESERVE02)){
                    tempInNode.getUserObject().setNodeReserve02(dataSource.getStringValue(i, JMNode.NODE_RESERVE02));
                }
                if(dataSource.getColNames().contains(JMNode.NODE_RESERVE03)){
                    tempInNode.getUserObject().setNodeReserve03(dataSource.getStringValue(i, JMNode.NODE_RESERVE03));
                }
                tempInNode.getUserObject().setNodeIndex(i);
                addNode(values, tempInNode);
               // if(JMNode.NODE_PATH_ROOT.equals(tempInNode.getNodePath())) treeSure = true;
            }
            //配置错误的时候中断
       //     if(!treeSure) break;
       // }//生成结束
    }

    /**
     * 创建树的内容
     * @param values JMMap
     * @param tempInNode JMTreeNode
     * @throws Exception
     */
    protected void addNode (JMMap<String, JMTreeNode> values, JMTreeNode tempInNode) throws Exception {

        JMTreeNode tempOutNode = null;
        String path = tempInNode.getNodePath();
        String code = tempInNode.getNodeCode();

        if (JMNode.NODE_PATH_ROOT.equals(path) || JMCheck.isNull(path)) {
            root.add(tempInNode);
            values.put(code, tempInNode);
        } else {
            tempOutNode = values.get(path);
            if (!JMCheck.isNull(tempOutNode)) {
                tempOutNode.add(tempInNode);
                values.put(code, tempInNode);
            }
        }

    }

    public JMTree getTree () {
        return tree;
    }

}

⌨️ 快捷键说明

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