`
java2000.net
  • 浏览: 634180 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

J2ME二级树型目录的实现

UI 
阅读更多

发一个以前写的UI代码吧, 一个可以表现目录树结构的java代码, 当然标题说是实现J2ME中的二级树目录意思是比较适合用在J2ME方面,因为J2ME没有提供这种UI组件形式,但实际应用开发中,这类界面用途很广。 下面我简单介绍一下设计思路。

首先我们要实现树型目录就要定义一个Tree的主干,也就是Tree类,然后在Tree上面安放节点(Node类)。每个节点下面就是分类的内容项目。 这样就是个二级树结构了。在实现上,我们把每个节点下包含的内容称作Member,让Member和Node都属于一种类型,我给它起名叫做Element。 我这样设计有它的一个好处,就是在界面上比较好表现出来,通过看代码就可以发现了。

下面是Element类的实现,我们把Element定义为抽象类。

package tree;

/** *//**
*
@author K7sem
*/

public abstract class Element ...{
 
 
protected String label;
 
protected boolean selected = false;
 
 
public Element(String str) ...{
  label 
= str;
 }

 
 
public Element() ...{  
 }

 
 
public String getLabel() ...{
  
return label;
 }

 
 
public void setLabel(String s) ...{
  label 
= s;
 }


 
public boolean isSelected() ...{
  
return selected;
 }

 
 
public void setSelected(boolean b) ...{
  selected 
= b;
 }

}

 

Element类中有两个成员变量,分别表示一个元素的名称和选中的状态, 当然这只是我的假设,我们还可以更改Element类,让它具备更多的特性,前提是这些属性要被Node和Member共用。


下面是Member类的实现:

 


package tree;

/** *//**
*
@author: k7sem
*/

public class Member extends Element...{    
    
    
public Member(String s) ...{
        
super(s);
    }

    
}

 


Member类可以什么都没有吗? 当然可以,因为如果它不需要额外的特性,比如带一个图标。 那么它可是不增加任何成员,只要实现一个构造器,然后去掉用一下父类的构造就OK了。

下面是Node类的实现:

 

package tree;

import java.util.Vector;

/** *//**
*
@author: k7sem
*/

public class Node extends Element...{
    
    
private boolean expand = false;
    
private Vector members = new Vector();    
    
    
public Node(String s) ...{
        
super(s);
    }
    
    
    
public void addMember(Member m) ...{
        members.addElement(m);
    }

    
    
public void removeMember(Member m) ...{
        members.removeElement(m);
    }

    
    
public Vector getMembers() ...{
        
return members;
    }

    
    
public void setExpand(boolean b) ...{
        expand 
= b;
    }

    
    
public boolean isExpanded() ...{
        
return expand;
    }

}

 

Node类看起来比Member类稍微多了一些代码,expand表示这个界面展开和收起的状态,members是一个Vector类对象,用来存储在这个节点下的所有成员。 当然它需要实现一些必要的方法才能完善这些功能,比如addMember和removeMember。

好了,下面是我们的主角,Tree类的实现部分:

 

package tree;

import java.util.Vector;

/** *//**
*
@author: k7sem
*/

public class Tree ...{    
    
    
private int maxSize = 0;
    
private Vector elements = new Vector();
    
private Vector displayList = new Vector();
    
private Vector dynamicList = null;    
    
private int beginIndex = 0;
    
private int endIndex = 0;
    
private int index = 0;        
    
private String name = null;    
    
private int uiIndex = 0;
    
    
public Tree(String n, int max) ...{
        name 
= n;
        maxSize 
= max;
    }

    
    
public Tree() ...{
        
    }
    
    
public void setName(String str) ...{
        name 
= str;
    }

    
    
public String getName() ...{
        
return name;
    }

    
    
public int getIndex() ...{
        
return index;
    }

    
/** *//**
     * 添加节点
     * 
@param n
     
*/

    
public void addNode(Node n) ...{
                          elements.addElement(n);
        refreshList();
    }

    
    
/** *//**
     * 删除节点
     * 
@param n
     
*/

    
public void removeNode(Node n) ...{
        elements.removeElement(n);
        refreshList();
    }


    
    
/** *//**
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics