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

📄 sdatreeview.java

📁 很好的UI界面源码..还有自己的输入法,可以更换风格.可以学习和使用
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package cn.sda.ui;import cn.sda.event.KeybordEvent;import cn.sda.event.PointerEvent;import cn.sda.event.TreeViewSelectChangeEvent;import cn.sda.event.TreeViewSelectNodeEvent;import java.util.Enumeration;import javax.microedition.lcdui.Graphics;import java.util.Vector;/** * @author not attributable * @version 1.0 */public class SDATreeView extends SDABaseControl {    //边框    private int borderStyle = SDAConsts.bsFixedSingle;    //隐藏选定内容    private boolean hideSelection = true;    //滚动边框(多行)    private int scrollBars = SDAConsts.srBoth;    private int barwidth = 10;    //边框线颜色    private int borderColor = SDAConsts.clBlack;    //滚动条颜色    private int scrollBarColor = SDAConsts.clBtnFace;    //选中后字体颜色    private int selectedFontColor = SDAConsts.clWhite;    //内部变量    //行数,行最大长度    private int maxLineLenght = 0;    private int maxLineNum = 0;    //最大可见完整行数    private int maxVisibleLineNum = 0;    //垂直开始显示行    private int startLine = 0;    //水平开始显示位置    private int startLeft = 0;    //变动前位置    private int oldStartLine = 0;    private int oldStartLeft = 0;    //水平滚条位置    private int HSLeft = 0;    private int HSTop = 0;    private int HSWidth = 0;    private int HSHeight = 0;    //垂直滚动条位置    private int VSLeft = 0;    private int VSTop = 0;    private int VSWidth = 0;    private int VSHeight = 0;    //点击的滚动条的位置    private int oldScrollPointx = 0;    private int oldScrollPointy = 0;    //按下滚动条    private boolean isscrollbarpointdown = false;    //记录按下的滚动条0:水平,1:垂直的    private byte scrollbardownHV = 0;    //行的列表    private Vector TreeNodes;    //当前选中行    private int itemIndex = -1;    private SDATreeNode CurNode = null;    //绝对行    private int absIndex = -1;    //间隔    private int indent = 10;    //临时变量    private int p_index = 0;    private int p_lindex = 0;    private int p_len = 0;    private SDATreeNode p_node = null;    //事件    private TreeViewSelectChangeEvent onSelectChange = null;    private TreeViewSelectNodeEvent onSelectNode = null;    public SDATreeView() {        super();        internalSDATreeView();    }    private void internalSDATreeView() {        TreeNodes = new Vector();        this.setVisible(true);        setLeft(0);        setTop(0);        setBorderStyle(SDAConsts.bsFixedSingle);        super.setWidth(160);        setHeight(100);        //高度根据字体高度来        setHeight(getFont().getHeight() + 4);        super.setBackColor(SDAConsts.clWhite);        this.onPointerPressed = new PointerEvent() {            public void Event(SDABaseControl ctrl, int x, int y) {                doPointerPressed(x, y);            }        };        this.onPointerReleased = new PointerEvent() {            public void Event(SDABaseControl ctrl, int x, int y) {                doPointerReleased(x, y);            }        };        this.onKeyUp = new KeybordEvent() {            public void Event(SDABaseControl ctrl, int keyCode) {                doKeyUp(keyCode);            }        };    }    //处理index(absIndex,layerIndex,index)    protected void setTreeNodesIndex() {        SDATreeNode node = null;        p_index = 0;        p_lindex = 0;        for (int i = 0; i < TreeNodes.size(); i++) {            node = (SDATreeNode) TreeNodes.elementAt(i);            node.setIndex(i);            node.setLayerIndex(p_lindex);            setTreeNodeIndex(node);        }    }    private void setTreeNodeIndex(SDATreeNode node) {        SDATreeNode cnode = null;        node.setAbsIndex(p_index);        node.setTree(this);        p_index++;        if (node.hasChild()) {            p_lindex++;        }        int index = 0;        for (int i = 0; i < node.getChildsCount(); i++) {            cnode = (SDATreeNode) node.getChild(i);            cnode.setIndex(index);            cnode.setTree(this);            cnode.setLayerIndex(p_lindex);            index++;            if (cnode.hasChild()) {                setTreeNodeIndex(cnode);            }        }        if (node.hasChild()) {            p_lindex--;        }    }    //增加项    public SDATreeNode addChild(SDATreeNode parent, String nodeString) {        return internalAddChild(parent, nodeString);    }    private SDATreeNode internalAddChild(SDATreeNode parent, String nodeString) {        SDATreeNode listitem = new SDATreeNode();        listitem.setNodeString(nodeString);        if (parent == null) {            TreeNodes.addElement(listitem);        } else {            parent.addChild(nodeString);        }        setTreeNodesIndex();        internalPaint();        return listitem;    }    public void addChild(SDATreeNode parent, SDATreeNode node) {        if (parent == null) {            if (!TreeNodes.contains(node)) {                TreeNodes.addElement(node);            }        } else {            if (!parent.hasChild(node)) {                parent.addChild(node);            }        }        setTreeNodesIndex();        internalPaint();    }    //删除项    public void deleteChild(int nodeIndex) {        internalDeleteChild(nodeIndex);    }    private void internalDeleteChild(int nodeIndex) {        SDATreeNode node = getNodeFromItemIndex(nodeIndex);        if (node.hasParent()) {            node.getParent().removeChild(node);        } else {            TreeNodes.removeElement(node);        }        node.removeAllChild();        if (TreeNodes.size() == 0) {            this.itemIndex = -1;        }        node = null;        setTreeNodesIndex();        internalPaint();        System.gc();    }    //清除所有项目    public void clear() {        internalClear();    }    private void internalClear() {        SDATreeNode node = null;        for (int i = 0; i < TreeNodes.size(); i++) {            node = (SDATreeNode) TreeNodes.elementAt(i);            node.removeAllChild();        }        TreeNodes.removeAllElements();        itemIndex = -1;        System.gc();        internalPaint();    }    //获取项    public String getNodeString(int NodeIndex) {        return internalGetNodeString(NodeIndex);    }    private String internalGetNodeString(int NodeIndex) {        String result = null;        SDATreeNode node = getNodeFromItemIndex(NodeIndex);        if (node != null) {            result = node.getNodeString();        }        return result;    }    //查找判断是否有指定内容的项    public SDATreeNode getChild(int Index) {        return getNodeFromItemIndex(Index);    }    public SDATreeNode getChild() {        return getNodeFromItemIndex(itemIndex);    }    //获取所有node列表    public Enumeration getAllChildsNode() {        Vector nodes = new Vector();        SDATreeNode node = null;        for (int i = 0; i < TreeNodes.size(); i++) {            node = (SDATreeNode) TreeNodes.elementAt(i);            getChildNode(nodes, node);        }        return nodes.elements();    }    private void getChildNode(Vector vt, SDATreeNode node) {        vt.addElement(node);        SDATreeNode cnode = null;        if (node.hasChild()) {            for (int i = 0; i < node.getChildsCount(); i++) {                cnode = (SDATreeNode) node.getChild(i);                getChildNode(vt, cnode);            }        }    }    //获取所有项目数    public int getChildsCount() {        p_len = 0;        SDATreeNode node = null;        for (int i = 0; i < TreeNodes.size(); i++) {            node = (SDATreeNode) TreeNodes.elementAt(i);            getChildNum(node);        }        return p_len;    }    private void getChildNum(SDATreeNode node) {        p_len++;        SDATreeNode cnode = null;        if (node.hasChild()) {            for (int i = 0; i < node.getChildsCount(); i++) {                cnode = (SDATreeNode) node.getChild(i);                getChildNum(cnode);            }        }    }    //画    public void paint() {        internalPaint();    }    private void internalPaint() {        if (!IsCanPaint()) {            return;        }        Graphics g = form.getGraphics();        g.setFont(getFont());        InternalPaint(g);        PaintChilds();    }    protected void InternalPaint(Graphics g) {        //可视下才画        if (isVisible()) {            //初始化引用变量            int thisWidth = getWidth();            int thisHeight = getHeight();            int HBarWidth = getHBarWidth();            int VBarHeight = getVBarHeight();            //对齐方式处理后,画组件            //设置字体            g.setFont(getFont());            //外框            SetClip(g);            //透明            if (!isTransparent()) {                g.setColor(backColor);                fillRect(g, 0, 0, thisWidth, thisHeight);            }            if (borderStyle == SDAConsts.bsFixed3D) {                g.setColor(SDAConsts.clGray);                drawLine(g, 0, 0, thisWidth, 0);                drawLine(g, 0, 0, 0, thisHeight);                g.setColor(SDAConsts.clBlack);                drawLine(g, 1, 1, thisWidth - 1, 1);                drawLine(g, 1, 1, 1, thisHeight - 1);                g.setColor(SDAConsts.clBtnFace);                drawLine(g, 2, thisHeight - 1, thisWidth - 2, thisHeight - 1);                drawLine(g, thisWidth - 1, 2, thisWidth - 1, thisHeight - 1);                g.setColor(SDAConsts.clWhite);                drawLine(g, 1, thisHeight, thisWidth, thisHeight);                drawLine(g, thisWidth, 1, thisWidth, thisHeight);                if (isFoucsed()) {                    g.setColor(SDAConsts.clFocusShadow);                    drawRect(g, 1, 1, thisWidth - 2, thisHeight - 2);                }            }            if (borderStyle == SDAConsts.bsFixedSingle) {                //边框                g.setColor(this.getBorderColor());                drawRect(g, 0, 0, thisWidth, thisHeight);                if (isFoucsed()) {                    g.setColor(SDAConsts.clFocusShadow);                    drawRect(g, 1, 1, thisWidth - 2, thisHeight - 2);                }            }            //打字                 g.setColor(getForeColor());            if (scrollBars == SDAConsts.srHorizontal) {                SetClip(g, 2, 2, thisWidth - 4, thisHeight - barwidth - 4);

⌨️ 快捷键说明

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