大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 网络媒体 -> FLASH -> 在List组件中使用渲染器

在List组件中使用渲染器

时间: 2021-07-31 作者:daque

在网上看过很多人连载darronschall的 labelcellrenderer 例子,个中有个缺点,把mylist.cellrenderer = "labelcellrenderer";这行代码放到了解释内里去了,然而四处连载的仍旧没有矫正(本来原文是精确的)。本来看了这个咱们并没有求甚解,要领会授人予鱼,不如授人予渔。咱们再来看下干什么经过cellrenderer不妨给list、datagrid、tree 和 menu 组件以及其它列表组件巩固单位格实质表露。 咱们开始要从list组件发端领会,list 类至关要害。datagrid、tree 和 menu 组件是 list 类的扩充。list 类由行形成。那些行表露滑过和选区超过表露,用作行选区的点击状况,并在震动中表演要害的脚色。除去选区超过表露和图标(如节点图标和 tree 组件的打开箭镞)除外,行还包括一个单位格(大概,即使是 datagrid,则包括多个单位格)。在默许情景下,那些单位格是实行 cellrenderer api 的 textfield 东西。然而,您不妨让 list 运用各别的组件类动作每一条龙的单位格。独一的诉求是该类必需实行 list 用来与单位格通讯的 cellrenderer api。list 类运用一种特殊搀杂的算法举行震动。一个列表只会列出它一次能表露的最多行数,胜过 rowcount 属性的值的名目基础不会赢得行。在列表震动时,它会将一切行左右挪动(在于于震动目标)。而后,列表将反复运用滚出视图的行;列表会从新初始化那些行,并运用它们动作正在滚入视图的新行,本领是将旧行的值树立为视图中的新行,而后将旧行移到新名目滚入视图的场所。要运用 cellrenderer api,您必需编写包括底下四个本领的类cellrenderer.getpreferredheight() 归来单位格的首要选择莫大cellrenderer.getpreferredwidth() 归来单位格的首要选择宽窄cellrenderer.setsize() 树立单位格的宽窄和莫大cellrenderer.setvalue() 树立要表露在单位格中的实质鉴于列表的组件将运用该类与单位格通讯。这即是咱们看到的darronschall设置的labelcellrenderer类。体例将为单位格机动指定两个本领和一个属性cellrenderer.getcellindex() 归来包括单位格衬托器数据字段的称呼的字符串cellrenderer.getdatalabel() 归来包括两个字段(columnindex 和 rowindex)的东西,这两个字段指明单位格的场所cellrenderer.listowner 指向包括单位格的列表的援用再不承诺它与鉴于列表的组件通讯。比方,假如单位格内包括一个复选框,该复选框引导行在单击时被选中。单位格衬托器须要援用包括它的鉴于列表的组件,再不挪用鉴于列表的组件的 selectedindex 属性。同声,单位格须要领会它暂时正在衬托的名目索引,再不不妨将 selectedindex 树立为精确的编号;单位格不妨运用 cellrenderer.listowner 和 cellrenderer.getcellindex() 到达此手段。您不须要实行那些 api;在将单位格放到鉴于列表的组件内时,单位格将机动接受那些 api。咱们来看下labelcellrenderer类实行的这几个本领代码:function createchildren(void) : void {     label = createobject("label", "label", 1, { stylename:this, owner:this });    label.html = true;    size();} // setsize is implemented by uicomponent and calls size(), after setting// __width and __heightfunction size(void) : void {     label.setsize(__width, __height);    // make sure the label field is in the top-left corner     // of the row    label._x = 0;    label._y = 0;} function setvalue(str:string, item:object, sel:boolean) : void {     // hide the label if no data to display    label._visible = (item!=undefined);    // this line actually sets htmltext     label.text = item.label;} function getpreferredheight(void) : number {     // this is the height with the default font, you might    // need to adjust this to suit your needs    return 18; } function getpreferredwidth(void) : number {     // default to the width of the listbox    return __width;}个中用来表露html标志的即是setvalue本领了。咱们设置了这个类后,剩下即是对list组件来树立新的单位格衬托器了。运用底下的代码:1 : //labelcellrenderer即是指定单位格衬托的贯穿id2 : mylist.cellrenderer = "labelcellrenderer";大概看完那些,你不妨做出更好功效的衬托器来。要提防的是,惟有flashmx2004的list组件才扶助。 (根源:热门搜集)

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.