发一个以前写的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();
}

/** *//**
J2ME二级树目录UI实现
本文介绍了一种适用于J2ME平台的二级树目录UI组件实现方案。通过定义Element基类及其派生类Node和Member,构建了一个简易的目录树结构。该方案能够较好地展示文件夹和文件层级关系。
6067

被折叠的 条评论
为什么被折叠?



