CSDN博客

img caipc2005

java树型控件文档(简)

发表于2008/9/28 11:36:00  1432人阅读

分类: java类

 感谢朋友下载的java树型控件,下面是关于树型的简单文档资料                      qq:396775219

 

                                  

1 树型的编辑:

1.1树节点的删除

   非子叶节点的删除时,会其下所有节点都删除

1.2节点的添加

   新节点编号: 如果此节点本身就是子叶节点(即没有子节点)

   编号就为节点 新节点编号=节点编号+01

   如果此节点非子叶节点时(即有子节点)

   新节点编号=节点编号+(max(节点编号)+1)

   比如: 某节点下有如下子节点

             0101

                      0102

                      0104

                      0108

 

         那么添的节点将是0109

   引起上面节点编号的原因主要是:在删除节点时,采用不更改

        其他节点算法,这样可以减计算上的复杂度,提高速度

   :系统采用两位为一级方式,所以节点下子节点最多为99

1.3节点修改

   节点修改只能修改节点的,文本、连接地址和描述

   不能修改节点的编号,所以节点在修改后,其层次不会发生变化

1.4编码

   系统采用utf-8编码

   对于添加节点、树型显示节点进,汉字是很好的支持的。

1.5地址栏传汉字参数处理  

   在修改和删除节点时,显示节点的信息时,出现乱码情况

   主要原因是:传信息时,系统采用url将汉字作了参数

   java,char为两个字节十六位,正好对应简单汉字表,所以在传参时,

   将汉字或字符先转化为数字编码串,在前台页面里再将串转化为相应的汉字

   比如:

                20013

          a       97

   所以 "a"  就可以转化为 "20013,97" 作为参数值传递

  

   :本系统里不支持特殊符号,尤其是"," 在添加节点时要特别注意

 

1.6树型的编辑

   并不是完全独立的控件,是结合web系统的,因为数据的编辑操作都会

   涉及到客户端与服务器端的数据交互

   树型的可编辑设置,只需设置applet参数表里的 isEdit yesno即可(不

   区分大小写)

1.7在树型根目录下直接添加子节点

   添加的算法和其他子节点相同,但右键弹出菜单只设置"添加"

   也就是说,这个树型至少有一个根节点

 

2树型数据的存放

   数据存放在与调用此控件的jsp页面同目录的 .csv文件里(逗号分隔文件)

   系统采用按行,顺序读取,生成自定义的树型节点对象存在在内存中

   在文件中节点数据是无序的,所以系统在定义节点对象时,实现Comparable

   compareTo()方法,然后将存放节点对象的list,使用Collections.sort(list)

   进行排序.

3树型节点对象的定义

   属性如下

    private String nodeid;    //节点的唯一编码

       private String superid;   //当前节点的父节点编码

       private String text;      //节点显示文本

       private String url;       //节点连接地址

       private String describ;   //节点的描述

       private boolean isopen;   //节点是否为打开

       private int level;        //节点的树型中的层次

      

       private int nodeH=15;

       private boolean display=false; //节点是否显示

       private Image imageShow=null;  //节点图标

       private Font font=null; 

       private XYPoint begin=null;    //节点开始坐标

       private XYPoint point=null;    //节点结束点坐标

 

     nodeid,superid 这两个属性的关系定义了节点的父子关系

     isopen true false表示,此节点是否处于打开的状态 即变换打开与关闭目

            录标识符,加、减号变换使用

     level 每一个节点在树型中所处在层次,用于计算控件的 水平滚动条,如果层次

            的显示起过了一定值时,水平滚动条将会出现或隐蔽

     display 节点是否显示,初始状态时,只能根目录显示,其下的所有子节点都不显示

     imageShow 节点的显示图标,有文件夹打开、关闭、三角符(被点选时状态)共三种

     begin 节点在控件显示,即绘制树型时,每个节点开始坐标

     point 节点在控件显示,即绘制树型时,每个节点结束坐标点,为其下的子节点的

           开始点做好准备

     其他就不详细说明了.一目了然的

4事件   

4.1鼠标点击事件

MouseListener, MouseMotionListener

Public void mouseClicked(MouseEvent mouseClick){

  If(鼠标右键事件){

 

}

  Else if(鼠标左键事件){

  //主要是点击连接事件

}

}

4.2鼠标点击事件的监听

采用的坐标范围的捕捉文式

:

   (a,b) 点击事件的坐标

 

  if(a>x1&&a<x2&&b>y1&&b>y2)

{

}

4.3滚动条滚动事件

  Public Boolean handleEvent(Event event){

        if (event.target == scrollbarX) //水平滚动条事件

           {

              dx=((Integer)event.arg).intValue();             

              repaint();

           }

       if (event.target == scrollbarY)//垂直滚动条事件

           {

              dy=((Integer)event.arg).intValue();

              repaint();

       }

}

4.4菜单的监听事件

ActionListener

 Public void actionPerformed(ActionEvent event){

if (event.getSource()==addItem) {

              //添加子节点

             

           }

    else if (event.getSource()==delItem) {

              //删除当前节点

             

              }

    else if (event.getSource()==modItem) {

              //修改当前节点 

 

           }

}

5文件的读写

5.1 添加节点

    因为树型的数据都是存放到文件中的, 所以添加是写文件的过程,是在文件内容后新加入内容,如下创建写对象

      BufferedWriter writer = new BufferedWriter(new FileWriter(file,true));

      Writer.write(content);

5.2 节点的删除

存入到文件里的数据不像存放在数据库里那样好操作.数据的删除只能在内存里操作

然后将结果全部写入到文件中,同时将先前,文件中的内容全部删除

BufferedWriter writer = new BufferedWriter(new FileWriter(file,false));

Writer.write(content);

5.3 修改节点

操作如上,删除

6参数设置

6.1常规参数

    <param name="param1" value="测试参数0">

    <param name="charSet" value="GB2312">

    <param name="lineColor" value="#4B4B4B">

    <param name="bgColor" value="#FFEECC">

    <param name="StrColor" value="#000000">

    <param name="urlTarget" value="frame2">

    <param name="borderColor" value="#CCBB88">

    <param name="isEdit" value="yes">      //树型是否可以界面编辑

6.2目录图标

<!-- Images -->     //目录图标

<param name="image1" value="closedfolder|../images/iconimages/closedfolder.gif">

<param name="image2" value="openfolder|../images/iconimages/openfolder.gif">

<param name="image3" value="document|../images/iconimages/document.gif">

<param name="image4" value="point|../images/iconimages/point.gif">

<param name="image5" value="root|../images/iconimages/root.gif">

6.4数据文件名称

<!-- Node File -->

<param name="nodeFile" value="menu.csv">     //存放数据文件名称

 

0 0

相关博文

我的热门文章

img
取 消
img