当前位置: 首页 > 图文教程 > 网络编程 > JSP > J2ME中实现可伸展目录树TreeList

JSP
jsp计数器制作
用jsp编写文件上载
基于JSP的动态网站开发技术
JSP由浅入深(3)—— 通过表达式增加动态内容
JSP由浅入深(5)—— Scriptlets和HTML的混合
JSP由浅入深(1)—— 熟悉JSP服务器
JSP由浅入深(12)—— 表单编辑
JSP由浅入深(11)—— 标记库
JSP由浅入深(10)—— Beans and Forms处理
JSP由浅入深(9)—— JSP Sessions
JSP由浅入深(8)—— JSP Tags
JSP由浅入深(6)—— JSP声明
JSP由浅入深(4)—— Scriptlets
JSP由浅入深(2)—— 第一个JSP
JSP由浅入深(7)—— JSP Directives
JSP中的字符替换函数 str_replace() 实现!
把一张图片变形扭曲成各种不同的长宽
用JSP编写通用信息发布程序
Java Servlet及Cookie的使用
Apache+Servlet+Jsp环境设置(上)

JSP 中的 J2ME中实现可伸展目录树TreeList


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-02   浏览: 76 ::
收藏到网摘: n/a

  J2ME里面有自带的List类,但是功能太弱,没有实现View和Model的分离,所以操作起来比较费事。本来事想写一个Canvas的TreeList,但是画起来算坐标又太麻烦,所以选取了一个折中的方法,继承List,实现一个操作起来比较方便的组件。

  目的:

  1.可伸缩的目录树结构,暂时先实现两层。

  2.Label和存储内容分离。

  3.激活和非激活图片分开。

  4.通过选择事件可以准确快速找到对应内容

  5.存储内容无关性,里面可以放置任何Object

  实现思路:

  1.封装一个ExpandItem类,用来存储每一条数据。

/**
* 默认图片
*/
private String imagePath="";
/*
* 激活图片,如果为空说明此图片无效
*/
private String selectImgPath=null;
/**
* 组
*/
public static int GROUP=1;
/**
* 记录
*/
public static int ITEM=0;
/**
* 是否选中,如果选中则默认为展开状态
*/
private boolean ifselected=false;
/**
* 显示Label
*/
private String label;
/**
* 类型:组,记录
*/
private int type;
/**
* 存储的对象
*/
  GROUP表示这个ITEM是一个父节点,下面包含字节点,这样它的Content将是一个Vector.ITEM表示这个ITEM是根节点。

  selectImgPath,是激活后的图标,可以为空,为空的时候选择了这个ITEM图标不变。

  然后就是ExpandList类,此类的数据结构如下:

private Vector itemList = new Vector();

/*用来存储内容的数据结构*/

private ExpandListItem currentSelectedObject = null;

/*当前所选择的对象,方便获取*/

private int currentSelectedIndex = -1;

/*当前选择的对象在队列中的Index,队列有两个,一个是真实数据的存储Vector,另外一个是显示在屏幕上的队列。这两个有时候是不一样的。因为有的节点有子节点*/

private Vector appearHookList = new Vector();

/*显示在屏幕上的Label队列*/
  总的思路如下:

  初始化List的时候,参数是一个Vector,里面可以是ExpandItem或者是Vector.然后根据ExpandItem里面的参数初始化屏幕,如果GROUP节点的ifselected状态为True则递归添加下面的子节点,否则只插入当前节点。图标也是一样,如果ifselected为True 则用激活图标否则用默认图标。

  在用户选择了一个结点后,取得当前的激活的Index号码,判断是不是父节点,如果是的话,首先更新这个父节点的Ifselected属性为True,然后重画这个List;(其实效率更高的方法是直接插入这个父节点的子节点,但是这样做的话,在移除的时候会稍微稍微麻烦一点。有时间我在改过来,呵呵)。如果选择的是子节点,则判断是否有激活图标,如果有,则更新这个图标,就好了。

  下面是效果